ift ift http://ift.wiki.uib.no/Main_Page MediaWiki 1.39.6 first-letter Media Special Talk User User talk ift ift talk File File talk MediaWiki MediaWiki talk Template Template talk Help Help talk Category Category talk Form Form talk Widget Widget talk Main Page 0 1 1 2009-02-12T14:36:43Z MediaWiki default 0 wikitext text/x-wiki <big>'''MediaWiki has been successfully installed.'''</big> Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 08fc850f2898611c250d639e30f69532b5a016f8 2 2009-02-13T09:32:00Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 9a1eb207daacccd2dfb88dc99c33298e41e6b100 3 2009-02-18T09:47:35Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [Experimental Nuclear Physics group] Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 5e91625d51257cd55022e2bf6ea3c453342e9d30 4 2009-02-18T09:47:58Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Experimental Nuclear Physics group]] Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 8d4f74843237377a8e58d1c4b58b70ed6a3a110f 12 2009-02-18T10:05:53Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Space Physics group]] Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] caa6a5f4aa7f9a3e178c02a0e803a3ae5472e5b6 19 2009-02-18T10:23:11Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 011171ab8ea50902aa4375c1a391badf300c202a 20 2009-02-18T10:27:02Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. == Getting started == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] ebd9b3886ef17083fa97d3ddaecac76032646e95 21 2009-02-18T10:41:45Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] --- == Getting started == Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 8127c63e4d0167c5b0653f80b136bd4f86749673 Experimental Nuclear Physics group 0 2 5 2009-02-18T09:48:34Z Nfyku 4 New page: == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the Universi... wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- * [[CERN Schedule]] Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[PHOS PVSS panels]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Tips & Tricks corner]] * [[Intern]] * [[ALICE Gallery for pictures, plots, etc...]] <center>[[Image:alice.gif]]</center> 95da02ce9f4902f63303f9819b9474160fb34bb0 18 2009-02-18T10:10:02Z Nfyku 4 wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[PHOS PVSS panels]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Tips & Tricks corner]] <center>[[Image:alice.gif]]</center> f88d17b0707b5ea2e67c97d49f84321e08274190 Busy Box and related 0 3 6 2009-02-18T09:50:25Z Nfyku 4 New page: == Overview == The Busy Box is located in the DAQ Counting Room. Its purpose is to halt the data taking when the system is saturated with event data. When the multievent buffers in the Fr... wikitext text/x-wiki == Overview == The Busy Box is located in the DAQ Counting Room. Its purpose is to halt the data taking when the system is saturated with event data. When the multievent buffers in the Front End Electronics run full, the Busy Box asserts a busy-signal to the Local Trigger Unit which halts the issuing of new triggers. The the busy-signal will be deasserted once there are available buffers. To calculate the number of used mulitevent buffers the Busy Box listens to the trigger system to see which events have been triggered, and then poll all the DRORCs to see which events have been transfered to DAQ. === Download Section === 47bfae1aae25b3d7814ed855ff6c70375d6b11a4 Electronics for the Time Projection Chamber (TPC) 0 4 7 2009-02-18T09:53:22Z Nfyku 4 New page: === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RC... wikitext text/x-wiki === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.2.bin armboot_v2.2.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3.bin armboot_v2.3.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://www.ift.uib.no/~alme/wiki/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://www.ift.uib.no/~alme/wiki/xilinx_hwicap.o xilinx_hwicap.o] | [http://www.ift.uib.no/~alme/wiki/loop.o loop.o] | [http://www.ift.uib.no/~alme/wiki/readme.txt readme.txt] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.4.bin armboot_v2.4.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.5.bin armboot_v2.5.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.6.bin armboot_v2.6.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.61.bin armboot_v2.61.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.62.bin armboot_v2.62.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://www.ift.uib.no/~alme/wiki/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://www.ift.uib.no/~alme/wiki/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://www.ift.uib.no/~alme/wiki/vreg.jed vreg.jed]<br> ispVM System Project File: [http://www.ift.uib.no/~alme/wiki/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </li> </ul> <br><br> === Download Section === [http://www.ift.uib.no/~alme/wiki/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://www.ift.uib.no/~alme/wiki/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://www.ift.uib.no/~alme/wiki/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i><br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> d9ce1687974ecfe5213e84df18d9303419b3b029 8 2009-02-18T09:55:45Z Nfyku 4 wikitext text/x-wiki == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.2.bin armboot_v2.2.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3.bin armboot_v2.3.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://www.ift.uib.no/~alme/wiki/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://www.ift.uib.no/~alme/wiki/xilinx_hwicap.o xilinx_hwicap.o] | [http://www.ift.uib.no/~alme/wiki/loop.o loop.o] | [http://www.ift.uib.no/~alme/wiki/readme.txt readme.txt] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.4.bin armboot_v2.4.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.5.bin armboot_v2.5.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.6.bin armboot_v2.6.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.61.bin armboot_v2.61.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.62.bin armboot_v2.62.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://www.ift.uib.no/~alme/wiki/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> 7fe67753b7a3fc104d1af4b86ef720120bfee26d 9 2009-02-18T09:56:58Z Nfyku 4 wikitext text/x-wiki == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.2.bin armboot_v2.2.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3.bin armboot_v2.3.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://www.ift.uib.no/~alme/wiki/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://www.ift.uib.no/~alme/wiki/xilinx_hwicap.o xilinx_hwicap.o] | [http://www.ift.uib.no/~alme/wiki/loop.o loop.o] | [http://www.ift.uib.no/~alme/wiki/readme.txt readme.txt] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.4.bin armboot_v2.4.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.5.bin armboot_v2.5.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.6.bin armboot_v2.6.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.61.bin armboot_v2.61.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.62.bin armboot_v2.62.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://www.ift.uib.no/~alme/wiki/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://www.ift.uib.no/~alme/wiki/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://www.ift.uib.no/~alme/wiki/vreg.jed vreg.jed]<br> ispVM System Project File: [http://www.ift.uib.no/~alme/wiki/vreg.xcf vreg.xcf]<br><br> 43c2a2ee4f5d27588bce6d5d2fa7e3f18ecd0280 10 2009-02-18T09:59:22Z Nfyku 4 wikitext text/x-wiki == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.2.bin armboot_v2.2.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3.bin armboot_v2.3.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://www.ift.uib.no/~alme/wiki/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://www.ift.uib.no/~alme/wiki/xilinx_hwicap.o xilinx_hwicap.o] | [http://www.ift.uib.no/~alme/wiki/loop.o loop.o] | [http://www.ift.uib.no/~alme/wiki/readme.txt readme.txt] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.4.bin armboot_v2.4.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.5.bin armboot_v2.5.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.6.bin armboot_v2.6.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.61.bin armboot_v2.61.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.62.bin armboot_v2.62.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://www.ift.uib.no/~alme/wiki/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://www.ift.uib.no/~alme/wiki/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://www.ift.uib.no/~alme/wiki/vreg.jed vreg.jed]<br> ispVM System Project File: [http://www.ift.uib.no/~alme/wiki/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </li> </ul> <br><br> === Download Section === [http://www.ift.uib.no/~alme/wiki/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://www.ift.uib.no/~alme/wiki/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://www.ift.uib.no/~alme/wiki/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i><br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://www.ift.uib.no/~alme/wiki/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://www.ift.uib.no/~alme/wiki/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://www.ift.uib.no/~alme/wiki/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://www.ift.uib.no/~alme/wiki/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://www.ift.uib.no/~alme/wiki/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://www.ift.uib.no/~alme/wiki/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] <br><br> == Radiation related issues == TBA a6ee7f457e89d235ef345db83a23b9ae66a7892a 11 2009-02-18T09:59:56Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] <br><br> == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.2.bin armboot_v2.2.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3.bin armboot_v2.3.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://www.ift.uib.no/~alme/wiki/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://www.ift.uib.no/~alme/wiki/xilinx_hwicap.o xilinx_hwicap.o] | [http://www.ift.uib.no/~alme/wiki/loop.o loop.o] | [http://www.ift.uib.no/~alme/wiki/readme.txt readme.txt] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.4.bin armboot_v2.4.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.5.bin armboot_v2.5.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.6.bin armboot_v2.6.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.61.bin armboot_v2.61.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.62.bin armboot_v2.62.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://www.ift.uib.no/~alme/wiki/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://www.ift.uib.no/~alme/wiki/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://www.ift.uib.no/~alme/wiki/vreg.jed vreg.jed]<br> ispVM System Project File: [http://www.ift.uib.no/~alme/wiki/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </li> </ul> <br><br> === Download Section === [http://www.ift.uib.no/~alme/wiki/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://www.ift.uib.no/~alme/wiki/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://www.ift.uib.no/~alme/wiki/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i><br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://www.ift.uib.no/~alme/wiki/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://www.ift.uib.no/~alme/wiki/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://www.ift.uib.no/~alme/wiki/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://www.ift.uib.no/~alme/wiki/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://www.ift.uib.no/~alme/wiki/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://www.ift.uib.no/~alme/wiki/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] <br><br> == Radiation related issues == TBA 2ea3a220c061e072757e18aa2f5cb9229558bdc3 Detector Control System (DCS) for ALICE Front-end electronics 0 5 13 2009-02-18T10:06:05Z Nfyku 4 New page: [[Category:DCS]] == Purpose == This page acts as a knowledge base for parts of the ALICE Detector Control System (DCS), namely the control of the Front-end electronics of several sub-dete... wikitext text/x-wiki [[Category:DCS]] == Purpose == This page acts as a knowledge base for parts of the ALICE Detector Control System (DCS), namely the control of the Front-end electronics of several sub-detectors of ALICE. Since we are mainly involved in the TPC Front-end Electronics, this site may be a bit biased. But it may evolve to a more comprehensive data base for other detectors as well. __TOC__ == Overview == The Detector Control System (DCS) is one of the major modules of the ALICE detector. In general, it covers the tasks of controlling the cooling system, the ventilation system, the magnetic fields and other supports as well as the configuration and monitoring of the Front-end electronics. This page will only cover topics related to the latter. More information on the DCS in general can be found at the [http://alicedcs.web.cern.ch/AliceDCS DCS website]. So far, the following sub-detectors use a number of common components which have been developed in a joint effort: * [http://aliceinfo.cern.ch/Collaboration/ALICE_Project/TPC/index.html Time Projection Chamber (TPC)] * [http://www-alice.gsi.de/trd/index.html Transition Radiation Detector (TRD)] * Photon Spectrometer (PHOS) * Forward Multiplicity Detector (FMD) * EMCAL (new) They all use the DCS board as controlling node on the hardware level. Thus, the communication software can be (almost) identically. The DCS board is a custom-made board with an Altera FPGA that includes an ARM core, which provides the opportunity to run a light-weight Linux system on the card. The board interfaces to the front-end electronics via a dedicated hardware interface and connects to the higher DCS-layers via the DIM communication framework over Ethernet. Furthermore, all detectors but the TRD use a similar hardware setup in the front-end electronics: the Front-End Cards are based on the ALTRO chip and served by Readout Control Units (RCUs). Below is a figure exemplarily for the TPC. [[Image:TPC-FEE blockdia.png|frame|none|Blockdiagram of the TPC Front-end electronics]] === Software Architecture === The DCS consist of three main functional layers. From top to bottom this is: * The Supervisory Layer. The Supervisory Layer provides a user interfaces to the operator. It also communicates with external systems for the LHC * The Control Layer. The Supervisory Layer communicates with the Control Layer mainly through a LAN network. This layer consists of PCs, PLCs (Programmable Logic Cells) and PLC like devices. The Control Layer collects and processes information from the Field Level, as well as sending commands and information from the Supervisory Layer to the Field Layer. It also connects to the Configuration Database. * The Field Layer. The Field Layer consists of all field-devices, sensors, actuators and so on. The DCS board and the readout electronics is located in this layer. For the ALICE experiment, PVSS II has been chosen as SCADA (Supervisory Control And Data Acquisition) system (i.e. the Supervisory Layer). The PVSS connects to the InterComLayer, a specific communication software acting as the Control Layer and connecting the hardware devices in the Field Layer to the controlling system in the Supervisory Layer. The system uses the communication framework [http://www.cern.ch/dim DIM (Distributed Information Management)]. To interfaces are defined for the DCS which abstract the underlaying hardware: * PVSS and InterComLayer communicate through a specific interface, the Front-End-Device (FED), which is common among different sub-detectors within the ALICE experiment. The InterComLayer implements a server which the PVSS can subscribe to as a client. * Each hardware device implements a Front-End-Electronics-Server (FeeServer), which the InterComLayer subscribes to as a client. The InterComLayer connects to several FeeServers and pools data before distributing it to the SCADA system. Vice versa the InterComLayer distributes configuration data to the FeeServers. In addition it implements an interface to the Configuration Database containing all specific configuration data for the hardware devices. [[Image:FeeComChain.PNG|frame|none|Schematic overview of the DCS communication software]] === Hardware Components === * DCS board * Readout-Control-Unit * Frontend Cards * TRD Readout board == The communication software == [[Image:FEE-chain.png|frame|none|DCS data flow for the TPC Front-End-Electronics.]] === Communication Protocol === Communication between all layers is based on the DIM protocol. DIM is an open source communication framework developed at CERN. It provides a network-transparent inter-process communication for distributed and heterogeneous environments. TCP/IP over Ethernet is used as transport layer. A common library for many different operating systems is provided by the framework. DIM implements a client-server relation with two major functionalities. * Services: The DIM server publishes so called services and provides data through a service. Any DIM client can subscribe to services and monitor their data. The DIM clients get notified about current values via a callback from the DIM server. * Commands: A DIM server can accept commands from DIM clients. Server and client have to agree on the format of the command. Here applies the same for the possible data types like for the services. A dedicated DIM name-server takes control over all the running clients, servers and their services available in the system. Each server registers at startup all its services and command channels. For a client the location of a server is transparent. It asks the DIM name-server which server provides a specific service and retrieves the access information. The process then connects directly to the corresponding server. The DIM name-server concept eases a recovery process of the system after update and restart of servers or clients at any time. It enables also fast migration from one machine to another and distributed tasks. Whenever one of the processes (a server or even the name server) in the system crashes or dies all processes connected to it will be notified and will reconnect as soon as it comes back to life. === PVSS === === InterComLayer === The InterComLayer takes the task of the Control Layer. It runs independently from the other system layers on a separate machine outside of the radiation area. It provides three interfaces: * Front-End-Electronics Client (DIM client) to connect to the Field Layer * Front-End-Device Server (DIM server) to connect to the Supervisory Layer * Interface to the Configuration Database, using a database client [[Image:FeeCom-Software.png|frame|none|The InterCom layer in the data flow of the FeeCommunication software.]] The FEE interface consists of a command channel, a corresponding acknowledge channel, a message channel and several service channels. These services are referred to be values of interest like temperature, voltage, currents, etc. of the Front-end electronics. In order to reduce network traffic the FeeServer can apply thresholds for data value changes, so called dead-bands. Changes are only published if a certain dead-band is exceeded, the dead-band can be defined for each service independently in conformity with the different nature of the data. The InterComLayer connects to FeeServers according to the configuration. After the connection is established, the InterComLayer subscribes to the services of the FeeServers and controls their message channels. Filtering of messages according to the log-level is performed on each layer to reduce network traffic. The service channels of the FeeServers are pooled together and re-published to the supervisory level. By this means the source of the services is transparent to the SCADA system on top. The InterComLayer is an abstraction layer, which disconnects Supervisory and Field Layer. In order to transport configuration data to the Front-end electronics, the InterComLayer has an interface to the configuration database. Neither database nor InterComLayer know about the format of the data. The data will be handled as BLOBs (Binary Large OBjects). The database contains entries of configuration packages. For each specific configuration of the Front-end electronics it creates a descriptor which refers to the required configuration packages. The Supervisory Layer sends a request to load a certain configuration to the InterComLayer, which then fetches the corresponding ''BLOB'' from the configuration database and transports it through the command channel to the FeeServers. In addition, the InterComLayer provides functionality for maintenance and control of the FeeServers. Servers can be updated, restarted and their controlling properties can be adjusted to any requirements. For further details go to the [[InterCom Layer]] page. ==== Compiliation and Installation ==== It exists a dedicated description for compiling and installing the [[InterComLayer installation]]. === The Front-End-Electronics-Server === The DCS for the Front-end elctronics is based on so called Front-End-Electronics-Servers (FeeServers), which are running on the DCS board close to the hardware. A FeeServer abstracts the underlying Front-end electronics to a certain degree and covers the following tasks: * Interfacing hardware data sources and publishing data * Receiving of commands and configuration data for controlling the Front-end electronics * Self-tests and Watchdogs (consistency check and setting of parameters) In order to keep development simple and the software re-usable for different hardware setups the FeeServer has been splitted into a device independent core and an interface to the hardware dependent functionality. It exists a dedicated description for compiling and installing the [[FeeServer]], as well as some hints and guidelines for developing an own [[FeeServer#ControlEngine guidelines|ControlEngine]] (CE) for the FeeServer. ==== The FeeServer core ==== The core of the FeeServer is device-independent. It provides general communication functionality, remote control and update of the whole FeeServer application. Some features are related to the configuration of the data publishing. In order to reduce network traffic, variable deadbands have been introduced. Data is only updated if the variation exceeds the deadband. The core can be used for different devices, i.e. different detectors of the ALICE experiment. The device-dependent actions are adapted for each specific device and are executed in separated threads. This makes a controlled execution possible. If execution is stuck, the server core is still running independently. It can kill and clean up the stuck thread and notify the upper layers. ==== The ControlEngine (CE) ==== The ControlEngine implements the device dependent functionality of the FeeServer. The CE provides data access in order to monitor data points and executes received commands specific for the underlying hardware. An abstract interface between FeeServer and CE is defined, the ControlEngine implements interface methods for initializing, cleaning up and command execution. It has contact to the specific bus systems of the hardware devices. The access is ancapsulated in Linux device drivers. This makes the functionality of the CE independent from the hardware/firmware version. One example is the CE for the TPC detector and the RCU. Please check the dedicated site [[RCU ControlEngine]]. === DCS board tools === This sections covers the DCS board software for the TPC-like detectors (so far TPC, PHOS, most likely FMD and EMCAL). Apart from the mentioned FeeServer there are some low level tools and interfaces. In fact, the FeeServer uses them. ...[[DCS board tools| read more]]. == Specifications == === Front-End-Device interface === The FED API is common among all detectors in ALICE. It defines the interface between the FedServer(s) and the PVSS system of one detector. A more detailed description you will find in the document itself. This is the version currently (03.02.2006) also available at the DCS pages: [http://www.ift.uib.no/~kjeks/download/documents/FedServerAPI-v2.0.pdf FED API v2.0 (draft)] === Front-End-Electronics interface === === Control Engine interface === === [[DCS_board_tools#Message_Buffer_access_.28RCU_interface.29 | Message Buffer Interface]] === === [[RCU ControlEngine]] === === Format of TPC configuration data === == [[DCS FAQ]] == == [[DCS Download]] == == [[DCS Tutorial|How to set up a FeeCom chain]]== == [[Setup of low-level DCS for TPC Front-end electronics]]== == [[Setting up a local DCS network]]== == Links == * [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc The ALICE TPC Front End Electronics] * [http://alicedcs.web.cern.ch/AliceDCS/ ALICE Detector Control System group] * [http://www.kip.uni-heidelberg.de/ti/DCS-Board/current/ The DCS board pages] * [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html ARM linux on the DCS board] * [http://www.ztt.fh-worms.de/en/projects/Alice-FEEControl/index.shtml FeeCom Software] * [http://www.cern.ch/dim Distributed Information Management System (DIM)] ---- ---- f2bcee80f6aa270361172a4c4005be8270bbc242 PHOS PVSS panels 0 6 14 2009-02-18T10:06:39Z Nfyku 4 New page: ==Introduction== This is the documentation of the PVSS monitoring tool for the Front End Electronics (FEE) of the ALICE PHOS detector. The values are read from [[DIM]] and displayed in a G... wikitext text/x-wiki ==Introduction== This is the documentation of the PVSS monitoring tool for the Front End Electronics (FEE) of the ALICE PHOS detector. The values are read from [[DIM]] and displayed in a GUI. ==Feeserver services== *A13V0: Analog 13.0 V voltage. *A13V0C: Current for the analog 13.0 V channel. *A3V3: Analog 3.3 V voltage. *A3V3C: Current for the analog 3.3 V channel. *A6NV0: Analog -6.0 V voltage. *A6N0C: Current for the -6.0 V channel. *A6PV0: Analog 6.0 V voltage. *A6PV0C: Current for the 6.0 V channel. *D3V3: Digital 3.3 V voltage. *D3V3C: Current for the digital 3.3 V channel. *D4V0: Digital 4.0 V voltage. *D4V0C: Current for the digital 4.0 V channel. *TEMP1: Temperature sensor 1. *TEMP2: Temperature sensor 2. *TEMP3: Temperature sensor 3. ==Datapoint types (DPTs)== Datapoint types used in the program: *AliPHS_FEC: Represents one Front End Card (FEC). There is one datapoint element (DPE, variable) for each service published from the FEE-server. *AliPHS_RCU: Represents one RCU. Values from [[DIM]] are read in to feeserver_Services DPE-branch and then mapped to the correct FEC. The feeserver_stat branch containes the maximum value of each service for all FECs in the RCU. *AliPHS_Status: Represents one module. The DPEs contains the maximum value of each service for all FECs in the module. *AliPHS_ICOM: Represents the InterComLayer. The DPEs contains messages from the InterComLayer and configuration commands to be sent. ==Setup script (phsFed_setup.ctl)== The setup script creates all datapoints and sets up the DIM configuration. This script should only be ran once and by experts. ==Mapping script (phsFed_map.ctl)== The mapping scripts maps the DIM services from the AliPHS_RCU feerserver_Services branch to the right AliPHS_FEC datapoint. ==Get max script (phsFed_get_max.ctl== Finds the maximum value for each service for all FECs in one RCU. The values are written to the AliPHS_RCU feeserver_stat branch. ==Check all states for one RCU script (AliPhs_FECs_Up.ctl)== Checks all states of one RCU and writes to the AliPHS_RCU feeserver_stat.AllFecOk datapoint element. ==Get maximum of maximums script(phs_fed_get_total_max.ctl))== Finds the maximum of the maximum values for each RCU for one module and writes it to the AliPHS_Status DPEs. ==Check all states for one module script (phsFed_check_all_states.ctl)== Checks states for all FEC for one module and writes it to the AliPHS_Status ALL_FecOk DPE. ==AliPhsMonitoringDisplay (Main panel)== [[Image:AliPhsMonitoringDisplay.png|830px]] This is the main monitoring panel. It consists of one tab for each service group and one for the state. The color represents the maximum value of the service for the RCU. If you click on the square representing an RCU a new panel with all values for all FECs on the RCU will pop up. Each tab contains a subpanel (named AliPhsA13V0Max.pnl, etc). Each RCU-square is made from a reference panel (named refAliPhsA13V0.pnl, etc) The reference panel change color when the maximum value for the corresponding RCU changes. ==FEC table== [[Image:AliPhsRCUTable2.png|830px]] ==Control panel== [[Image:AliPhsControl.png|400px]] 84158c7866fc8cbba9fdbf8a8cdc08d357bf7ea1 Xilinx Tools 0 7 15 2009-02-18T10:07:08Z Nfyku 4 New page: '''Frame Generation Tool'''<br><br> '''''General'''''<br> This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To g... wikitext text/x-wiki '''Frame Generation Tool'''<br><br> '''''General'''''<br> This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br><br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames.<br> <br> '''''Creating frames'''''<br> Generating the frames is done in these steps:<br> 1. Load the bit-file for the FPGA<br> 2. Type the name of the device as you can see above in “DeviceName”<br> 3. Load the XML configuration file<br> 4. Type the directory where the frames are saved to<br> 5. Press the “Split” button<br> If the frames were generated successfully or an error occurred you will see a message.<br> <br> '''''Creating binary command blocks'''''<br> This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> '''''Uploading to a dedicated location'''''<br> To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> '''NOTE''': the remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. 31d9bf4d154cb98ed61b0f87ef3389841b32634c HLT 0 8 16 2009-02-18T10:07:35Z Nfyku 4 New page: [[Category:HLT]] == HLT == Here you will find informations around the developing of the HLT (High Level Trigger) for [http://aliceinfo.cern.ch/index.html ALICE], especially for the [http:... wikitext text/x-wiki [[Category:HLT]] == HLT == Here you will find informations around the developing of the HLT (High Level Trigger) for [http://aliceinfo.cern.ch/index.html ALICE], especially for the [http://aliceinfo.cern.ch/Collaboration/ALICE_Project/TPC/index.html TPC]. Another important source of knowledge for this topic are the [http://www.kip.uni-heidelberg.de/wiki/HLT/index.php/Main_Page HLT pages] the corresponding Wiki of the [http://www.kip.uni-heidelberg.de Kirchhoff Institute (KIP)] of the [http://www.uni-heidelberg.de University of Heidelberg]. ---- Wanted pages for here are: - [[HLT Overview]] - [[HLT Cluster]] - [[Publish/Subscriber]] Framework (developed by Timm M. Steinbeck) - [[Online reconstruction]] - [[HLT - AliEn interface]] 9324e8d018a2da050e86fd1638ae9d5111bfc1c3 GRID 0 9 17 2009-02-18T10:08:30Z Nfyku 4 New page: [[Category:GRID]] == Purpose == The LHC experiments will produce unprecedented amounts of data, reaching several PB/year for a standard ALICE data taking year. Handling such amounts of dat... wikitext text/x-wiki [[Category:GRID]] == Purpose == The LHC experiments will produce unprecedented amounts of data, reaching several PB/year for a standard ALICE data taking year. Handling such amounts of data clearly calls for automated procedures for analysis and data management. Grid techniques will be used to handle the worldwide computing task necessary to extract the ALICE physics results. The general idea of a computing grid is to make world wide computing resources seamlessly available in analogy to information diffusion by World Wide Web. Several Grid prototypes are being developed, but there are still a long range of challenges to provide a full fledged Grid solution. __TOC__ == Grid systems == Several Grid systems are being developed, among them the [http://public.eu-egee.org/ gLite/EGEE] system being developed by a European project, and the [http://www.opensciencegrid.org Open Science Grid] with American roots. The ARC middleware developed by the [http://www.nordugrid.org NorduGrid] project is being actively used in the Nordic countries. The ALICE collaboration has developed the Grid prototype [http://alien.cern.ch AliEn (Alice Environment)]. As other middleware evolves, AliEn will be changed into a common high level interface for the ALICE collaboration. == Grid dictionary == Grid is a rapidly evolving technology. With its roots in Computer Science, it is hardly surprisning to find that it contains a lot of names and acronyms. The following is a non-exhaustive list of relevant terms for the ALICE grid activity: ; AliEn - Alice Environment : Grid prototype developed by the ALICE collaboration. Originally used as a "standalone" Grid prototype, AliEn will be further developed with interfaces to major Grid middleware systems, and will be used as a common platform for all Grid based analysis in ALICE. ; LCG - LHC Computing Grid : A common project set up to coordinate computing needs for all LHC experiments. LCG is also the name of a Grid middleware package. This will be merged into the software to be developed by the common European project EGEE. The LCG project will be maintained with the perspective of organising LHC computing (which is far more than middleware development). ; EGEE - Enabling Grids for E-Science in Europe : EU-funded project to develop a general Grid middleware for scientific needs. The EGEE project has strong roots in the original LCG project. The current version of the EGEE middleware is called gLite. ; gLite : Common European middleware developed by the EGEE project (see above). This middleware will be used by most of the European Tier-1 centres (The Nordic centre being an exception). ; OSG - Open Science Grid : US computing infrastructure including Grid middleware. To be used by US and other computing centres also for LHC computing. ; NorduGrid : A Nordic project that has developed a Grid protoype now distributed as ARC. This middleware has widespread use in Scandinavia and Northern Europe, and has been widely used in ATLAS data challenges. ; ARC - Advanced Resource Connector : Middleware developed by the NorduGrid project. This middleware will be used by the Nordic Tier-1 centre. Interfacing between AliEn and ARC will be developed. ; Tier-x : The computer centres that will take part in LHC data processing have been organised in a hierarchical structure, so that Tier-0 is at CERN, where all data will originally be recorded. There will be a limited number of Tier-1 centres, which will be manned/serviced 24/7, and which will provide permanent storage facilities along with computing resources. Tier-2 centres will connect to CERN through a Tier-1 centre, and will basically provide computing resources. ; Nordic Tier-1 centre : The Nordic countries have agreed to provide distributed Tier-1 centre for LHC processing. This centre will appear as one entity towards the central facility at CERN, but will be physically distributed amongcomputing centres in the Nordic countries. All the participating centres will fulfill the service level requirements for a Tier-1 centre. The Nordic Tier-1 centre will use ARC as its middleware for the internal distribution of jobs and resources. ; NDGF - Nordic Data Grid Facility : The organisation that has been set up to manage the Nordic Tier-1 centre. No machines are owned or runned by NDGF, the organisation provides resources and some manpower to existing computing centres. ; Condor : A system to handle jobs in a heterogenous distributed computer environment. ARC uses Condor to handle jobs inside each participating computer cluster. ; VO - Virtual Organisation : Logical Grid subdivision grouping Grid users belonging to the same project, who should have access to the same resources. As an example ALICE will be a VO. ; VO Box : In a full-fledged Grid all necessary computing resources should be handled through Grid mechanisms, and the user should not care where a given job is actually handled. As Grid middleware is still a project under development, and as LHC needs data processing at startup in 2007, it has been agreed upon an "interim" solution allowing each VO to have access to dedicated computing resources at each participating centre, where specific software can be installed. Experiment responsibles may have root access at the VO Box, but not at the general computing resources. ; CE - Computing element : The part of the Grid middleware that do job management, and handles CPU resources. The AliEn installation at the hansa cluster in Bergen will use Condor as its Computing Element. ; SE - Storage element : The part of the Grid middleware that handle files residing locally. In Tier-1 centres, which will provide permanent storage for Grid-wide access, this will normally be some storage management system including a tape robot and staging space on disk. At the hansa cluster a 250 GB disk is set aside to operate as a Grid SE for AliEn. ; FTD - File Transfer Daemon : The part of the Grid middleware that handle transport of files between sites. This should happen transparently, so that the user in principle should not need to be aware of where the file is actually located. Authentication issues are handled through Grid certificates, which are somewhat parallell to SSH keys used for traditional remote computing. == AliEn in Bergen == System resources for ALICE Grid production will be operated by [http://www.parallab.uib.no Parallab] connected to the [http://www.ndgf.org Nordic Data Grid Facility]. The NDGF will run ARC as its basic middleware. The necessary software to interface ARC and AliEn is currently being developed. For development and prototyping purposes, Grid software is also installed in the local cluster at the Department of Physics and Technology, called hansa. The following information provides more details on the Grid/AliEn installation on the hansa cluster. == Needed tools == The AliEn software needs a batch system underneath to run and distribute jobs. AliEn supports many different batch systems, like BQS, CONDOR, DQS, Globus, LSF and PBS. For hansa we are using [http://www.cs.wisc.edu/condor/ Condor], in order to be able to use its [http://www.cs.wisc.edu/condor/manual/v6.6/5_2Connecting_Condor.html Flocking] feature. On top of it [http://alien.cern.ch ''AliEn''] will be installed to participate in the AliEn grid. == Installing Condor == [http://www.cs.wisc.edu/condor Condor] is developed by the [http://www.cs.wisc.edu/ University of Wisconsins Madison]. A detailed description of the [[Condor Installation on hansa]] can be found here. == Installing AliEn == [http://alien.cern.ch AliEn] is developed at [http://www.cern.ch CERN] as GRID middleware for [http://aliceinfo.cern.ch/ ALICE]. A detailed description of the [[AliEn installation on hansa00]] can be found here ''(preliminary)''. General description for [[General AliEn Installation|installing AliEn]] is here.. == GRID Meeting Minutes == Here are the [[GRID Meeting Minutes|minutes]] from our (weekly) GRID meeting at Høygskolen, starting with November the 27th 2006. 5bc6d7e11a527f8a6b04c5a25b8afb44d51d3182 File:Bergen from Ulriken.gif 6 10 22 2009-02-18T10:52:44Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Alice.gif 6 11 23 2009-02-18T10:54:43Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Iftlogo.jpg 6 12 24 2009-02-18T11:07:28Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:RCU DCS sketch.png 6 13 25 2009-02-18T11:34:52Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:DCS FW.png 6 14 26 2009-02-18T11:35:33Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:TTC Receiver schematic v1-1 final.png 6 15 27 2009-02-18T11:36:31Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Dcs interface v0.2.png 6 16 28 2009-02-18T11:37:19Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Actel fw1-3.png 6 17 29 2009-02-18T11:37:53Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:FlashProLite.jpg 6 18 30 2009-02-18T11:38:21Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 The Actel software device in the FeeServer CE 0 19 31 2009-02-18T11:39:29Z Nfyku 4 New page: == Overview == As described in [[Electronics for the Time Projection Chamber (TPC)]] the RCU has an Active Partial Reconfiguration (APR) network to reconfigure the Xilinx SRAM based FPGA i... wikitext text/x-wiki == Overview == As described in [[Electronics for the Time Projection Chamber (TPC)]] the RCU has an Active Partial Reconfiguration (APR) network to reconfigure the Xilinx SRAM based FPGA in case there appear errors due to the radiation environment. This reconfiguration network includes some Flash memory and the Actel Flash based FPGA. The main task of the Actel software device is to monitor and control the operation of the Actel FPGA. For this reason it offers different services, as monitoring different registers that give information about the state of the hardware, to control the main operation modes of the Actel FPGA and to program the Flash memory for the Active Partial Reconfiguration solution to work. The Actel FPGA features three ways to configure the Xilinx Virtex-II Pro FPGA: *Initial Configuration : Configures the Xilinx Virtex-II Pro once during startup or on command from the DCS board. *Scrubbing : Continously overwrites the configuration memory of the Xilinx Virtex-II Pro, wether an error occured or not. *Frame by Frame readback and error correction : The Actel reads back the single configuration frame of the Xilinx Virtex and compares them to the configuration data stored in the Flash memory on the RCU. For this Active Partial Reconfiguration solution to work, the Flash memory has to be programmed with the correct firmware for the Xilinx FPGA. There are two ways on how to program the Flash memory: *The rcuflashprog command line tool *the here described Actel software device Information about the Actel FPGA and the rcuflashprog tool can be found at: [[Electronics for the Time Projection Chamber (TPC)#RCU Auxilliary FPGA Firmware for TPC and PHOS]] 7b3c5e188b85a0149e3ac7f83d04960a5e025241 File:PHOS BC v3.3.png 6 20 32 2009-02-18T11:41:25Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Detector lab 0 21 33 2009-02-18T12:10:45Z Dfe002 7 New page: == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical application... wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, Kjetil * Engineers: Dominik, Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. e894e51a0ef67caf5cd7161861adec3913dfc6e6 PET Project 0 22 34 2009-02-18T13:30:38Z Dfe002 7 New page: == Characterisation Cell == == Characterisation setup and results == wikitext text/x-wiki == Characterisation Cell == == Characterisation setup and results == 9112aac100024e7144dacf3a3cce072ba445e786 41 2009-02-18T13:39:29Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. PETscan.jpg Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET senter at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == Characterisation Cell == == Characterisation setup and results == 2d316f1a4a014a15be9379bd3b4b6656977443d1 43 2009-02-18T13:40:40Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETscan.jpg|frame|none|]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET senter at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == Characterisation Cell == == Characterisation setup and results == cbe4bd122dee9de7f5077116028c65ed5eb9fce2 48 2009-02-18T13:44:28Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET senter at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == Characterisation Cell == == Characterisation setup and results == 36d2939a5c7bcb721845f9cf7676ed422aac4239 3D Detector Activities 0 23 35 2009-02-18T13:30:55Z Dfe002 7 New page: == 3D setup == wikitext text/x-wiki == 3D setup == 72bd4c5cde540f6e3c2dd38834b709ca885e59a4 36 2009-02-18T13:32:27Z Dfe002 7 wikitext text/x-wiki = Introduction to 3D detectors = 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: More information * Testbeam talk by Erlend and Ole * 3D workshop in Barcelona * 3D-state of the art * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328) Our Activities * TestBeam Analysis * 3DSensor Characteristics * 3DMeasurement System Who are we? * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... 25902ddbb4ac1eb47de2bcd44b3e7071c52f1458 37 2009-02-18T13:33:17Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: == More information == * Testbeam talk by Erlend and Ole * 3D workshop in Barcelona * 3D-state of the art * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328) == Our Activities == * TestBeam Analysis * 3DSensor Characteristics * 3DMeasurement System == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... ee99b667408c26e151ef0f69a270c5df4f4b9b56 38 2009-02-18T13:34:39Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: == More information == * Testbeam talk by Erlend and Ole * 3D workshop in Barcelona * 3D-state of the art * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328) == Our Activities == * TestBeam Analysis * 3DSensor Characteristics * 3DMeasurement System == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... c8ed61cc42f19cb822a4a0b546b02d9e4e305388 Calorimeter Activities 0 24 39 2009-02-18T13:35:29Z Dfe002 7 New page: == General information == Information about ILC, CALICE and calorimeter detectors can be found here: * http://ilcagenda.cern.ch/conferenceOtherViews.py?confId=1049&view=cdsagenda&showDat... wikitext text/x-wiki == General information == Information about ILC, CALICE and calorimeter detectors can be found here: * http://ilcagenda.cern.ch/conferenceOtherViews.py?confId=1049&view=cdsagenda&showDate=all&showSession=all&detailLevel=contribution == Our projects == * About Calorimeter tesbeam? * Calorimeter Measurement System? be5a658a8ceb086348e192d7b3e0d06238b84e76 40 2009-02-18T13:35:43Z Dfe002 7 wikitext text/x-wiki == General information == Information about ILC, CALICE and calorimeter detectors can be found here: * http://ilcagenda.cern.ch/conferenceOtherViews.py?confId=1049&view=cdsagenda&showDate=all&showSession=all&detailLevel=contribution == Our projects == * About Calorimeter testbeam? * Calorimeter Measurement System? 25c0be5a04776dae31fb369747873a04cb73cf11 Microelectronics group 0 25 42 2009-02-18T13:39:51Z Nfyku 4 New page: Mikroelektronikk Dokumentasjon for Mentor-programvaren finnes i katalogen /prog/mentor/mgc/ic.2005.1/shared/pdfdocs/ eller /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ - [IC studio ] Vei... wikitext text/x-wiki Mikroelektronikk Dokumentasjon for Mentor-programvaren finnes i katalogen /prog/mentor/mgc/ic.2005.1/shared/pdfdocs/ eller /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ - [IC studio ] Veiledning til IC-design ved hjelp av IC studio - [IC Station] Tegne utlegg for integrerte kretser - [Expedition PCB] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB - [Modelsim] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim - [PCI-eksperiment] Øving med HLT-RORC-prototypekort - [Cadence Virtuoso] - [Xilinx] Øving i bruk av Xilinx Project Studio - [FLTK GUI] Graphical User Interface using FLTK - [Tutorials] Tutorials from the web - [ADS] Getting started with Agilent Advanced Design System 904bf4d5c10c8c257c9ac2b01efe2dd0084f28f0 44 2009-02-18T13:40:57Z Nfyku 4 wikitext text/x-wiki Mikroelektronikk Dokumentasjon for Mentor-programvaren finnes i katalogen /prog/mentor/mgc/ic.2005.1/shared/pdfdocs/ eller /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ - [[IC studio]] Veiledning til IC-design ved hjelp av IC studio - [[IC Station]] Tegne utlegg for integrerte kretser - [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB - [[Modelsim]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim - [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort - [[Cadence Virtuoso]] - [[Xilinx]] Øving i bruk av Xilinx Project Studio - [[FLTK GUI]] Graphical User Interface using FLTK - [[Tutorials]] Tutorials from the web - [[ADS]] Getting started with Agilent Advanced Design System d3eacfc91ce48d5541950ede849ad9167df1af01 46 2009-02-18T13:41:55Z Nfyku 4 wikitext text/x-wiki == Headline text == Mikroelektronikk Dokumentasjon for Mentor-programvaren finnes i katalogen /prog/mentor/mgc/ic.2005.1/shared/pdfdocs/ eller /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System 99b83a499e2009cb8dd49049666b65a56753008d 47 2009-02-18T13:42:28Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor-programvaren finnes i katalogen /prog/mentor/mgc/ic.2005.1/shared/pdfdocs/ eller /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System 9c05f5f5c45bec53806c7e3a0e3d5ecbd0d7c1a2 File:PETEscan.jpg 6 26 45 2009-02-18T13:41:01Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D drawing1.png 6 27 49 2009-02-18T13:45:21Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 IC studio 0 28 50 2009-02-18T13:45:42Z Nfyku 4 New page: == Kom igang med IC studio == En veiledning til design og utlegg "Kjetil Ullaland", mailto:Kjetil_punktum_Ullaland@ift.uib.no, *Universitetet i Bergen, Institutt for fysikk og teknologi,... wikitext text/x-wiki == Kom igang med IC studio == En veiledning til design og utlegg "Kjetil Ullaland", mailto:Kjetil_punktum_Ullaland@ift.uib.no, *Universitetet i Bergen, Institutt for fysikk og teknologi,* *Sist oppdatert 18. februar 2009 av Kjetil* Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> =Starte opp IC studio= Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. =Dokumentasjon= Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> =Åpne et nytt skjema= Høyre-klikk Library-vinduet. Velg New View og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "View Type" Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. <img src="uploads/IC_studio_new_view.png" /> velg show palette fra ikonlisten til høyre. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. =Design Viewpoint= Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. =Simulering= Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). =Prober og plot= Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. =Tips= For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. =Bruk av IC station= Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation aff0101edce228e6233a1014344876bad2abadd7 File:3D drawing2.png 6 29 51 2009-02-18T13:45:52Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 IC studio 0 28 52 2009-02-18T13:47:55Z Nfyku 4 wikitext text/x-wiki == Kom igang med IC studio == =En veiledning til design og utlegg= Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> =Starte opp IC studio= Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. =Dokumentasjon= Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> =Åpne et nytt skjema= Høyre-klikk Library-vinduet. Velg New View og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "View Type" Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. <img src="uploads/IC_studio_new_view.png" /> velg show palette fra ikonlisten til høyre. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. =Design Viewpoint= Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. =Simulering= Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). =Prober og plot= Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. =Tips= For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. =Bruk av IC station= Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 48a33d99a3c8f3e33f42bc2d8131b2b43b3f8547 53 2009-02-18T13:48:48Z Nfyku 4 wikitext text/x-wiki == Kom igang med IC studio == ===En veiledning til design og utlegg=== Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> =Starte opp IC studio= Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ===Dokumentasjon=== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ===Åpne et nytt skjema=== Høyre-klikk Library-vinduet. Velg New View og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "View Type" Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. <img src="uploads/IC_studio_new_view.png" /> velg show palette fra ikonlisten til høyre. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ===Design Viewpoint=== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ===Simulering=== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). =Prober og plot= Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ===Tips=== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ===Bruk av IC station=== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation ad0c762b53479b84593c1143a8ad30c4e3d7d537 55 2009-02-18T13:52:00Z Nfyku 4 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg New View og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "View Type" Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. <img src="uploads/IC_studio_new_view.png" /> velg show palette fra ikonlisten til høyre. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 0e314f507c88e6bf1310e31754d651b7cb6759ee 78 2009-02-19T08:44:00Z Nfyku 4 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg New View og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "View Type" Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg show palette fra ikonlisten til høyre. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 94f3db5a7de3de5eb67c6a18a5d37ce2d1da47b9 3D Detector Activities 0 23 54 2009-02-18T13:51:34Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * Testbeam talk by Erlend and Ole * 3D workshop in Barcelona * 3D-state of the art * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328) == Our Activities == * TestBeam Analysis * 3DSensor Characteristics * 3DMeasurement System == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... c19b2ec01f0bd237d51832c1b382eceffb97de1c 56 2009-02-18T14:07:38Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] == Our Activities == * TestBeam Analysis * 3DSensor Characteristics * 3DMeasurement System == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... 5d21990cf7a3659aecf0d8326387b8a147d7e418 Main Page 0 1 57 2009-02-18T14:48:40Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] Det er meningen at disse sidene skal være lesbare for hele verden. Regner med at det blir fikset snart. == Getting started == Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 46f70a3c89306f92aa1d3131f7a97ab090026a60 ift:About 4 30 58 2009-02-18T16:22:07Z Nfyku 4 New page: http://www.uib.no/ift Institutt for fysikk og teknologi] Forskningen ved Institutt for fysikk og teknologi er organisert innenfor 9 forskergrupper og dekker et bredt spekter av disipliner... wikitext text/x-wiki http://www.uib.no/ift Institutt for fysikk og teknologi] Forskningen ved Institutt for fysikk og teknologi er organisert innenfor 9 forskergrupper og dekker et bredt spekter av disipliner fra grunnleggende og grensesprengende problemstillinger om universets sammensetning til høyteknologiske prosjekter innen elektronikk eller olje- og gassrelaterte områder. 1aaeca71c4a6364c524d9e189251a00310e1546e 59 2009-02-18T16:22:26Z Nfyku 4 wikitext text/x-wiki [http://www.uib.no/ift Institutt for fysikk og teknologi] Forskningen ved Institutt for fysikk og teknologi er organisert innenfor 9 forskergrupper og dekker et bredt spekter av disipliner fra grunnleggende og grensesprengende problemstillinger om universets sammensetning til høyteknologiske prosjekter innen elektronikk eller olje- og gassrelaterte områder. ce63a2230525d08aba0b595b4369b5bfd1b2c4aa 60 2009-02-18T16:22:48Z Nfyku 4 wikitext text/x-wiki ===[http://www.uib.no/ift Institutt for fysikk og teknologi]=== Forskningen ved Institutt for fysikk og teknologi er organisert innenfor 9 forskergrupper og dekker et bredt spekter av disipliner fra grunnleggende og grensesprengende problemstillinger om universets sammensetning til høyteknologiske prosjekter innen elektronikk eller olje- og gassrelaterte områder. 5dc781c0cf0635f3f228fe515609d25ebe42cf27 IC Station 0 31 61 2009-02-19T07:08:57Z Nfyku 4 New page: ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon... wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. <img src="uploads/drc_chedr.bmp" /> Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... <img src="uploads/drc_options_2.bmp" /> Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. <img src="uploads/drc_fra_meny.bmp" /> ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpent et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). <img src="uploads/lvs_setup_button.bmp" /> Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. <img src="uploads/lvs_2.bmp" /> Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. <img src="uploads/lvs_setup_2.bmp" /> Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. <img src="uploads/extract_mask_lumped_parameters.bmp" /> Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. <img src="uploads/sch_parasitics _included.bmp" /> Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. d9764024c9340db38f9b82abf31dd6be11420ec9 80 2009-02-19T08:48:04Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.bmp]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.bmp] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image::drc_fra_meny.bmp] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpent et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.bmp] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.bmp] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.bmp]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.bmp]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:uploads/sch_parasitics _included.bmp]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. d2d65e2dd39930fb03804986ea2e46a47a0b57fa 81 2009-02-19T08:55:41Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image::drc_fra_meny.png] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpent et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:uploads/sch_parasitics _included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 17efa785643e463e564695351d24c890f323d400 82 2009-02-19T08:56:44Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image::drc_fra_meny.png] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpent et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. bb0851795e8c060c97ae8b0ab3d588e20b262a90 84 2009-02-19T08:58:01Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image::drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpent et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. f0a9a2f9d474747759641dc9e354713a316ddd62 91 2009-02-19T09:00:37Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpent et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 37b13e9e183dbaf5ed93da755e3cc7a3c787034b 93 2009-02-19T09:02:05Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 91b583faa4c163dbc7acfb3985ae45338cd1cbe6 94 2009-02-19T09:02:43Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Innstillinger for prosessen S35: <pre> Cell name: (Navn på cell/utlegg) Attach library: $AMS_DIR/mentor/ic_station/s35/libraries/s35d4.library Process: $AMS_DIR/mentor/ic_station/s35/process/s35d4.process Rules file: $AMS_DIR/mentor/ic_station/s35/rules/s35d4.rules </pre> ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. f35f7b28f5ac13b9a1300d9c46f9cacaba41c984 Expedition PCB 0 32 62 2009-02-19T07:10:15Z Nfyku 4 New page: ===Kom igang med Expedition PCB=== En veiledning til design og utlegg *Universitetet i Bergen, Institutt for fysikk og teknologi,* *Sist oppdatert oktober 2007 Dette er en kort beskriv... wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg *Universitetet i Bergen, Institutt for fysikk og teknologi,* *Sist oppdatert oktober 2007 Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable <pre> setenv SDD_ROOT /prog/mentor/exp2005 setenv MGC_HOME /prog/mentor/exp2005/2005EXP/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/exp2005/2005EXP/SDD_HOME </pre> ==Starte utleggsprogrammet=== <pre> /prog/mentor/exp2005/2005EXP/SDD_HOME/common/linux/bin/ExpeditionPCB </pre> ==Skjemategning== Må muligens da sette MGC_HOME til /prog/mentor/mgc/2005.1 <pre> /prog/mentor/mgc/2005.1/bin/da_ic </pre> b6b1c255dde5955cadcaa072463de05a47756e2f 63 2009-02-19T07:10:41Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg Universitetet i Bergen, Institutt for fysikk og teknologi, Sist oppdatert oktober 2007 Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable <pre> setenv SDD_ROOT /prog/mentor/exp2005 setenv MGC_HOME /prog/mentor/exp2005/2005EXP/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/exp2005/2005EXP/SDD_HOME </pre> ==Starte utleggsprogrammet== <pre> /prog/mentor/exp2005/2005EXP/SDD_HOME/common/linux/bin/ExpeditionPCB </pre> ==Skjemategning== Må muligens da sette MGC_HOME til /prog/mentor/mgc/2005.1 <pre> /prog/mentor/mgc/2005.1/bin/da_ic </pre> 2212310d36552aacebdcff4910e3e980d4cd868c 64 2009-02-19T07:11:01Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable <pre> setenv SDD_ROOT /prog/mentor/exp2005 setenv MGC_HOME /prog/mentor/exp2005/2005EXP/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/exp2005/2005EXP/SDD_HOME </pre> ==Starte utleggsprogrammet== <pre> /prog/mentor/exp2005/2005EXP/SDD_HOME/common/linux/bin/ExpeditionPCB </pre> ==Skjemategning== Må muligens da sette MGC_HOME til /prog/mentor/mgc/2005.1 <pre> /prog/mentor/mgc/2005.1/bin/da_ic </pre> bd0e5c6be963c677dbc348bb3b5299a32d18d67f Modelsim/Questa 0 33 65 2009-02-19T07:12:43Z Nfyku 4 New page: Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] 02520b3a826446cadb898f5f72bc07059a5f2c49 Simulering av VHDL 0 34 66 2009-02-19T07:15:00Z Nfyku 4 New page: ===Konstruksjon og simulering av VHDL-kode med ModelSim=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av... wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med ModelSim=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås. * Eksempel 2: Signaler og variable. Hvert eksempel beskrives med VHDL som vist i kurskompendiet. I tillegg til VHDL-koden i eksempel 1 trengs en ENTITY-del og en ARCHITECTURE-konstruksjon som omslutter selve programlinjene. Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 6.1 i kurskompendiet er vist nederst i dette dokumentet. Mentor Graphics har utviklet programvare (Modelsim) som gjør det mulig å simulere og debugge VHDL-kode. Design architect kan brukes til å skrive og kompilere VHDL-programmene, men det anbefales å bruke en teksteditor i VHDL-modus, f.eks Emacs. Modelsim brukes til simulering. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs (eller en den innebygde teksteditoren i ModelSim). Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive "M-x vhdl-mode" (M står for "Meta" og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ".vhdl" som "etternavn". (F. eks. sr_latch.vhdl) ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter Modelsim, og startes med kommandoen <pre> vsim & </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. Start et nytt prosjekt med <pre> File > New > Project </pre> Velg et fornuftig navn og katalog. Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) "mentor" sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Modelsim== Når koden kompilerer feilfritt kan den simuleres i Modelsim. Dette startes med: <pre> vsim & </pre> Modelsim bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i ModelSim-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen "force" eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempel: Signalflyt i en SR-lås== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i ModelSim, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv "run 100" i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. "force S 0" i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> Eksempel: Signaler og variable. Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> 5986d8106235482257c81d16f994d44eccf5a160 95 2009-02-19T09:05:47Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med ModelSim=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås. * Eksempel 2: Signaler og variable. Hvert eksempel beskrives med VHDL som vist i kurskompendiet. I tillegg til VHDL-koden i eksempel 1 trengs en ENTITY-del og en ARCHITECTURE-konstruksjon som omslutter selve programlinjene. Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 6.1 i kurskompendiet er vist nederst i dette dokumentet. Mentor Graphics har utviklet programvare (Modelsim) som gjør det mulig å simulere og debugge VHDL-kode. Design architect kan brukes til å skrive og kompilere VHDL-programmene, men det anbefales å bruke en teksteditor i VHDL-modus, f.eks Emacs. Modelsim brukes til simulering. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs (eller en den innebygde teksteditoren i ModelSim). Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn". (F. eks. sr_latch.vhdl) ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter Modelsim, og startes med kommandoen <pre> vsim & </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. Start et nytt prosjekt med <pre> File > New > Project </pre> Velg et fornuftig navn og katalog. Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Modelsim== Når koden kompilerer feilfritt kan den simuleres i Modelsim. Dette startes med: <pre> vsim & </pre> Modelsim bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i ModelSim-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempel: Signalflyt i en SR-lås== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i ModelSim, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Eksempel: Signaler og variable== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> af3c123ea22e388d8b9a80d428e6f3bf88309632 96 2009-02-19T09:07:14Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med ModelSim=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås. * Eksempel 2: Signaler og variable. Hvert eksempel beskrives med VHDL som vist i kurskompendiet. I tillegg til VHDL-koden i eksempel 1 trengs en ENTITY-del og en ARCHITECTURE-konstruksjon som omslutter selve programlinjene. Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 6.1 i kurskompendiet er vist nederst i dette dokumentet. Mentor Graphics har utviklet programvare (Modelsim) som gjør det mulig å simulere og debugge VHDL-kode. Design architect kan brukes til å skrive og kompilere VHDL-programmene, men det anbefales å bruke en teksteditor i VHDL-modus, f.eks Emacs. Modelsim brukes til simulering. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs (eller en den innebygde teksteditoren i ModelSim). Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn". (F. eks. sr_latch.vhdl) ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter Modelsim, og startes med kommandoen <pre> vsim & </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. Start et nytt prosjekt med <pre> File > New > Project </pre> Velg et fornuftig navn og katalog. Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Modelsim== Når koden kompilerer feilfritt kan den simuleres i Modelsim. Dette startes med: <pre> vsim & </pre> Modelsim bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i ModelSim-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i ModelSim, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> 6f42909c4fab5e9ef00df3148a1534716ba2799c 97 2009-02-19T09:12:50Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med ModelSim=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: [[Wikipedia:Signalflyt i en SR-lås]] * Eksempel 2: [[Wikipedia:Signaler og variable]] Hvert eksempel beskrives med VHDL som vist i kurskompendiet. I tillegg til VHDL-koden i eksempel 1 trengs en ENTITY-del og en ARCHITECTURE-konstruksjon som omslutter selve programlinjene. Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 6.1 i kurskompendiet er vist nederst i dette dokumentet. Mentor Graphics har utviklet programvare (Modelsim) som gjør det mulig å simulere og debugge VHDL-kode. Design architect kan brukes til å skrive og kompilere VHDL-programmene, men det anbefales å bruke en teksteditor i VHDL-modus, f.eks Emacs. Modelsim brukes til simulering. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs (eller en den innebygde teksteditoren i ModelSim). Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn". (F. eks. sr_latch.vhdl) ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter Modelsim, og startes med kommandoen <pre> vsim & </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. Start et nytt prosjekt med <pre> File > New > Project </pre> Velg et fornuftig navn og katalog. Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Modelsim== Når koden kompilerer feilfritt kan den simuleres i Modelsim. Dette startes med: <pre> vsim & </pre> Modelsim bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i ModelSim-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i ModelSim, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> 8eb50779eb9cf7139de8897d89070d17311dfaac 98 2009-02-19T09:16:30Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med ModelSim=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Hvert eksempel beskrives med VHDL som vist i kurskompendiet. I tillegg til VHDL-koden i eksempel 1 trengs en ENTITY-del og en ARCHITECTURE-konstruksjon som omslutter selve programlinjene. Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 6.1 i kurskompendiet er vist nederst i dette dokumentet. Mentor Graphics har utviklet programvare (Modelsim) som gjør det mulig å simulere og debugge VHDL-kode. Design architect kan brukes til å skrive og kompilere VHDL-programmene, men det anbefales å bruke en teksteditor i VHDL-modus, f.eks Emacs. Modelsim brukes til simulering. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs (eller en den innebygde teksteditoren i ModelSim). Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn". (F. eks. sr_latch.vhdl) ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter Modelsim, og startes med kommandoen <pre> vsim & </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. Start et nytt prosjekt med <pre> File > New > Project </pre> Velg et fornuftig navn og katalog. Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Modelsim== Når koden kompilerer feilfritt kan den simuleres i Modelsim. Dette startes med: <pre> vsim & </pre> Modelsim bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i ModelSim-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i ModelSim, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> d3f088847ad570ef461c5c838f7b294dae8f4157 VHDL Testbenk 0 35 67 2009-02-19T07:18:23Z Nfyku 4 New page: ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit n... wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Del.1 - Do-file== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscilliasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Del.2 Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. d7a6939aa505aedc0c9e60d5a7a2dca404eecee2 68 2009-02-19T07:19:35Z Nfyku 4 wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscilliasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. dec0cda453c8cc1b44fb11fcc14fd05800d8f467 Synthese av VHDL 0 36 69 2009-02-19T07:21:16Z Nfyku 4 New page: ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og ett... wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisens i Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Nå du får en "ROOTDIR"-error, må du skrife i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/quartus </pre> Modelsim Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte 'prosjektdir til precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== *Kode til alu_example.vhdl:* <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> *Koden til add_sub_alu.vho* <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> *Koden til alu_tb.vhdl* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> 22571af455f2a1ddedb0ab660d10427afd3e6d5b 70 2009-02-19T07:24:19Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisens i Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/quartus </pre> Modelsim Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte 'prosjektdir til precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== =Kode til alu_example.vhdl= <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> =Koden til add_sub_alu.vho= <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> =Koden til alu_tb.vhdl= <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> d474f794e39876563e1e4b2cd8c4b49743e2c250 71 2009-02-19T07:33:54Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <source> mentor precision </source> Pass på at lisens i Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <source> setenv QUARTUS_ROOTDIR /prog/quartus </source> Modelsim Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte 'prosjektdir til precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <source lang=vhdl> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </source> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <source lang=sh> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </source> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <source lang=vhdl> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </source> ===Koden til add_sub_alu.vho=== <source lang=vhdl> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </source> ===Koden til alu_tb.vhdl=== <source lang=vhdl> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </source> 8dda25a205ee4759b5eef9521d16e37844803060 72 2009-02-19T07:46:37Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <source lang="vhdl"> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </source> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <source lang="vhdl"> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </source> ===Koden til add_sub_alu.vho=== <source lang="vhdl"> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </source> ===Koden til alu_tb.vhdl=== <source lang="vhdl"> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </source> f3aa559a204809c98c6d752e0eb62f2bf97ac0cd 73 2009-02-19T07:52:54Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> 84501b369be527e4c5f37097b42dfd8460bf0088 PCI-eksperiment 0 37 74 2009-02-19T07:55:50Z Nfyku 4 New page: =Laboratory exercise for building and running the HLT-RORC hardware/software= ==Simulation in ModelSim== 1. Extract "HLT-RORC.ZIP", file:/heim/torheim/arkiv/HLT-RORC.ZIP into your workin... wikitext text/x-wiki =Laboratory exercise for building and running the HLT-RORC hardware/software= ==Simulation in ModelSim== 1. Extract "HLT-RORC.ZIP", file:/heim/torheim/arkiv/HLT-RORC.ZIP into your working directory. 2. Set environment variable PROJECT_PATH equal to /my_working_directory/HLT-RORC/modelsim. 3. Start modelsim, then open project file HLT-prosjektfil.mpf in directory HLT-RORC/modelsim. 4. Map the simulation libraries. You can do this by typing from the command line (in the following order): <PRE> vlib work # Creating the work library vmap altera_pci /pakke/mgc/altera/vhdl/altera_pci vmap lpm /pakke/mgc/altera/vhdl/220model vmap altera_mf /pakke/mgc/altera/vhdl/altera_mf </PRE> If the compiled simulation libraries have become obsolete, you will have to compile the libraries yourself. This can be done by typing (in the following order): <PRE> vcom &#8211;work altera_mf altera_mf_components.vhd vcom &#8211;work altera_mf altera_mf.vhd vcom &#8211;work lpm 220pack.vhd vcom &#8211;work lpm 220model.vhd </PRE> 5. The mstr_tranx.vhd module contains the master transactions controlling the simulation scenario. To run the simulation with interrupt transfers, set the variable int_or_not equal to 1. To run the simulation with DMA transfers only, set the variable to zero. 6.Now you should compile your testbench with the design into your library work. The testbench could then be loaded by typing <i>vsim -t ps work.testbench</i> from the !ModelSim command line (not specifying the resolution in ps will result in a a fatal error). To run the simulation with 32 bit PCI bus, you could simply type <i>force -freeze /testbench/ack64n 1</i> before running simulation. 7. Run the simulation by typing <i>run ![time in ns]</i>. (You can get rid of all the warnings if you choose <i>Simulate -> Simulation Options -> Assertions -> Ignore assertions for warning</i> from the menu line) ==Synthesizing, technology mapping and transferring the design onto the APEX20KE FPGA== 1. Open Precision RTL Synthesis. Choose <i>File -> New Project</i>. Set the working directory to whatever you want to. 2. Add all the required VHDL files to you project. Make sure local_side.vhd is the last added file (The last added file will automatically be set as top of design). 3. Choose Setup Design to set the following options: APEX 20KE as technology, EP20K400EFC672 as device and -2X for the speed grade. The design frequency shold be 40 !MHz. 4. Click Compile, followed by Synthesize. 5. Close Precision RTL Synthesis. Make sure to anser "Yes" when asked about saving the current implementation. 6. A subdirectory called local_side_impl_1 has now been created in your working directory. Copy the content of local_side_impl_1 to /your_working_directory/HLT-RORC/LS/run_1. Answer yes when questioned to overwrite existing data. 7. Open top_module.qpf from Quartus. Convert the project file to the new Quartus file format if asked to do so. 8. If necessary, choose Tools -> !SignalTap Logic Analyzer and update the SignalTap file to the new file format. 9.Choose Assigments -> Settings -> User Library and add the correct library path (your_working_directory\HLT-RORC\pci_compiler-v2.1.1\lib). The newer versions of the pci core cannot be used, since the APEX20KE has been abandoned from further development. 10. Choose <i>Processing -> Start Compilation</i> to compile the design (this will take some time). 11. Choose <i>Tools -> Programmer</i>. Now choose JTAG as MODE. To make your programming file come through the scan chain, you have to add the device EPM7256B. The EPM device has to be the first on the list. 12. From the file menu you can now choose <i>Create/update -> Create JAM, SVF or ISC file</i>. 13. SSH to pc-rcu.fi.uib.no. Enter the directory where the .jam file has been saved (should be /your_working_directory/HLT-RORC/Quartus) 14. type <i>jamplayer -p378 -aCONFIGURE top_module.jam</i>. In case you receive the following error message: "Error: can't open file "/heim/torheim/rorctest/HLT-RORC/Quartus/top_module.jam", ensure that you have set the correct user privileges for HLT-RORC directory including its files and folders. You can do this by typing chmod -R 666 HLT-RORC. 15. Reboot your system. The HLT-RORC should now be ready and running. On pc-rcu.fi.uib.no, BAR0 will probably be mapped to FB400000. This can be checked by typing <i>/sbin/lspci -v</i> from the command line. ==Verifying the implementation with the Vanguard Logic Analyzer== 1. Start the Analyzer (BusView.exe) 2. Choose <i>File -> New -> Analyzer Setup</i> 3. Add this event: PCI0 in transfer mode with address FD0xxxxx. 4. Add this trigger: <PRE> Samling in TRANSFER mode Store (ALL) If (PCI0) then Trigger at 50% of trace Endif </PRE> 5. Cut and paste this text into an empty text file and save the file as testbench.scr: <PRE> f FB400000 FB400000 FD000000 f FB400004 FB400004 00000400 f FB400008 FB400008 FD000000 f FB40002C FB40002C FD000000 f FB400030 FB400030 FD000000 f FB400018 FB400018 00000011 f FB400020 FB400020 00000019 f FB400024 FB400024 00000001 f FB400024 FB400024 00000000 f FB400028 FB400028 AFFED00F </PRE> NB! This script assumes that the base address for BAR0 in the HLT-RORC is FB400000. It also assumes that the PCI base address for the Vanguard local target memory is FD000000. 6. Choose <i>Exerciser -> Script -> Load</i> and enter testbench.scr. 7. Choose <i>Exerciser -> Target</i> and enable the local target memory. Check that the Memory Window Address is consistent with the memory addresses in the script file. 8. Enter F9 to start sampling on the PCI bus. Then enter F10 to run the exerciser script. The exerciser script now runs the same scenario as in the VHDL testbench. If the HLT-RORC-4 design is working, the analyzer should be triggered by the HLT-RORC writing bursts of data words to the local memory. 9. Enter Alt-F9 to halt the analyser after the analyzer has been been triggered. Then choose Exerciser -> Local -> Display to examine the data written to local target memory by HLT-RORC. ==Verifying the implementation with the software== NB! Step 1-2 can only be done by a user with root permission. The first steps should therefore be taken care of by the supervisor, so the students doing this exercise can jump directly to point 4. 1. To run the software, a kernel module called psi has to be inserted into the kernel. The PSI tar.gz file can be downloaded from http://www.kip.uni-heidelberg.de/ti/HLT/software/software.html. If you download PSI version 0.8.2 from august 2003, you will have to patch psi_mod.c to make it compile on newer kernels. A patchfile called psi_mod.patch is located in the HLT-RORC directory. Before compiling, remember to change the TOPDIR variable in the Makefile and remove -DWITHBIGPHYS if bigphys is not compiled into the kernel (and it probably isn't). Now you can install the module by entering directory psi-0.8.2\src\driver.linux and typing (in the following sequence): <PRE> make clean make module make install make dev (or typing manually mknod /dev/psi c 100 0) chmod 666 /dev/psi (to give normal users permission to access the device file) </PRE> The module can now be installed by typing <i>insmod psi.o</i> (You will need root permissions to do this. If you want to use my precompiled binaries instead of compiling yourself, make sure to boot up the computer with the 2.4.20custum-bigphys kernel. You can check which kernel is running by typing 'uname -a'.) Make sure that you are running with the same kernel when loading the module as when compiling the module, unless the modules wont work. To compile the PSI API, go to directory psi-0.8.2\src\libpsi.linux and type <i>make</i>. 2. Enter directory HLT-RORC/src. If necessary, you will have to edit Makefile and Rules.make before compiling. Then run <i>make all</i> followed by <i>make install</i>, <i>mknod /dev/irqsignal c 120 1</i> and <i>chmod 666 /dev/irqsignal</i>. Now you can insert the irqsignal module by typing <i>insmod irqsignal major=120</i>. 3. Enter directory HLT-RORC/example. Compile the included files by typing make generate_irq. Remember to change the PSIDIR variable in the Makefile before compiling. 4. Run the compiled program generate_irq. The program will set up the HLT-RORC card to start interrupt-driven DMA-transfers. A signal handler located in the generate_irq program will respond to the interrupts. The program can be terminated by pressing Ctrl-C. 5. To observe the transactions with the Vanguard Analyzer, use the same events and trigger conditions that were shown in the previous example. afb4282291b44c1bc8fbbb9c0e9c985d14c5878c Cadence Virtuoso overview 0 38 75 2009-02-19T07:59:31Z Nfyku 4 New page: =Laboratory exercise for building and simulating a simple CMOS inverter in Cadence Virtuoso== ==Starting up== To invoke Cadence Virtuoso, type the following from unix shell <PRE> ssh -X ... wikitext text/x-wiki =Laboratory exercise for building and simulating a simple CMOS inverter in Cadence Virtuoso== ==Starting up== To invoke Cadence Virtuoso, type the following from unix shell <PRE> ssh -X mikroserver2 source /prog/design_kits/cadence_init/cshrc.cadence.ams ams_cds -tech c35b4 -nologo -mode fb </PRE> Virtuoso Mixed Signal Design Environment should now start up: <img src="uploads/icms_uppstart.JPG" /> In the "icms" dialog box, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach an existing techfile". Then click the OK button. When asked for technology, choose TECH_C35B4. <img src="uploads/new_library.JPG" /> After successfully creating the new library, it is time to create your first design. In the "icms" dialog box, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name (for example "torcell", as I did). You must also specify which library the design belongs to, and here you specify the library that you have just created (in my case, TORLIB). <img src="uploads/create_new_file.JPG" /> Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: <img src="uploads/virtuoso_schematic_editor.JPG" /> ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos" (for n-type transistor) or "pmos" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. <img src="uploads/library_browser.JPG" /> 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. For the transistors, set the "Width" and "Lenght" properties to "4u" and "1u". For the pmos transistor, set the "Model name" property to "modp". For the nmos transistor, set the "Model name" property to "modn". As we will see later, the "modn" and "modp" models correspond to SPICE simulation models used by the simulator in the Analog Environment. <img src="uploads/edit_object_properties.JPG" /> <img src="uploads/edit_object_prop_pmos.JPG" /> 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Tools > Analog Environment". The "Virtuoso Analog Environment" should now come up: <img src="uploads/analog_env_1.JPG" /> ==Simulate the design== 8. Choose "Setup > Simulator/Directory/Host" and set spectreS as your simulator. 9. Choose "Setup > Model Path" and add directory "/prog/hk_37/spectreS/c35/cmos53/tm" to your model path. 10. Choose "Simulation > Netlist > Create Raw". 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. <img src="uploads/choosing_analyses.JPG" /> <img src="uploads/select_comp_parameter.JPG" /> The analog environment should now look like this: <img src="uploads/analog_env_2.JPG" /> 13. Choose "Simulation > Run". 14. After the simulation has completed, choose "Results > Plot Outputs > DC". The outputs should look like this: <img src="uploads/plot_output_dc.JPG" /> To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generate a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. <img src="uploads/add_pin.JPG" /> After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". <img src="uploads/create_cellview_from_cellview.JPG" /> Now press OK: <img src="uploads/symbol_generation_options.JPG" /> Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: <img src="uploads/symbol_editor.JPG" /> Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. 0c105b00b8f05aec69c228971980344dda63502d 76 2009-02-19T08:00:26Z Nfyku 4 wikitext text/x-wiki =Building and simulating a simple CMOS inverter in Cadence Virtuoso= ==Starting up== To invoke Cadence Virtuoso, type the following from unix shell <PRE> ssh -X mikroserver2 source /prog/design_kits/cadence_init/cshrc.cadence.ams ams_cds -tech c35b4 -nologo -mode fb </PRE> Virtuoso Mixed Signal Design Environment should now start up: <img src="uploads/icms_uppstart.JPG" /> In the "icms" dialog box, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach an existing techfile". Then click the OK button. When asked for technology, choose TECH_C35B4. <img src="uploads/new_library.JPG" /> After successfully creating the new library, it is time to create your first design. In the "icms" dialog box, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name (for example "torcell", as I did). You must also specify which library the design belongs to, and here you specify the library that you have just created (in my case, TORLIB). <img src="uploads/create_new_file.JPG" /> Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: <img src="uploads/virtuoso_schematic_editor.JPG" /> ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos" (for n-type transistor) or "pmos" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. <img src="uploads/library_browser.JPG" /> 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. For the transistors, set the "Width" and "Lenght" properties to "4u" and "1u". For the pmos transistor, set the "Model name" property to "modp". For the nmos transistor, set the "Model name" property to "modn". As we will see later, the "modn" and "modp" models correspond to SPICE simulation models used by the simulator in the Analog Environment. <img src="uploads/edit_object_properties.JPG" /> <img src="uploads/edit_object_prop_pmos.JPG" /> 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Tools > Analog Environment". The "Virtuoso Analog Environment" should now come up: <img src="uploads/analog_env_1.JPG" /> ==Simulating the design== 8. Choose "Setup > Simulator/Directory/Host" and set spectreS as your simulator. 9. Choose "Setup > Model Path" and add directory "/prog/hk_37/spectreS/c35/cmos53/tm" to your model path. 10. Choose "Simulation > Netlist > Create Raw". 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. <img src="uploads/choosing_analyses.JPG" /> <img src="uploads/select_comp_parameter.JPG" /> The analog environment should now look like this: <img src="uploads/analog_env_2.JPG" /> 13. Choose "Simulation > Run". 14. After the simulation has completed, choose "Results > Plot Outputs > DC". The outputs should look like this: <img src="uploads/plot_output_dc.JPG" /> To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. <img src="uploads/add_pin.JPG" /> After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". <img src="uploads/create_cellview_from_cellview.JPG" /> Now press OK: <img src="uploads/symbol_generation_options.JPG" /> Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: <img src="uploads/symbol_editor.JPG" /> Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. 459ba6611ee8c06f4d1f5387f63eec65e857ae24 File:IC studio new view.png 6 40 79 2009-02-19T08:44:53Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Drc chedr.png 6 41 83 2009-02-19T08:56:58Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Drc options 2.png 6 42 85 2009-02-19T08:58:36Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Lvs setup button.png 6 43 86 2009-02-19T08:58:58Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Lvs 2.png 6 44 87 2009-02-19T08:59:16Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Lvs setup 2.png 6 45 88 2009-02-19T08:59:35Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Extract mask lumped parameters.png 6 46 89 2009-02-19T08:59:54Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Sch parasitics included.png 6 47 90 2009-02-19T09:00:14Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Drc fra meny.png 6 48 92 2009-02-19T09:00:56Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Detector lab 0 21 99 2009-02-19T09:39:06Z Nfyku 4 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [[http://www.uib.no/personer/Kjetil.Ullaland Kjetil]] * Engineers: Dominik, Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. 126589cd153dc0749234d021e7cb131b1baa4d47 100 2009-02-19T09:39:52Z Nfyku 4 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: Dominik, Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. 89ea5bd8bc069697be9072877b535b89c155dc63 101 2009-02-19T09:49:00Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: Dominik, Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] 951752b1f59908e2cc1ce6bfedc25982f4175756 Detector lab 0 21 102 2009-02-19T10:08:21Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] 4811aadedb2582c746d84537939fdb344619ff68 103 2009-02-19T10:23:57Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] [[Picture galley for talks, etc...]] f50e570b67efa78323c35bf949f3e83b4a7f52d2 104 2009-02-19T10:29:34Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] 4811aadedb2582c746d84537939fdb344619ff68 105 2009-02-19T10:33:18Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] * [[whateveryouwant]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] 7676a02ea319607fe445aba7109e1e0a0d2cba98 106 2009-02-19T10:33:43Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] e18c3b92b9ff917fcb82b815405a13a2d949eb17 107 2009-02-19T13:28:53Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * Hege ... ac58e078835ef422981e5b54cb8e89bd7911347e 115 2009-02-19T15:27:31Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * Hege ... [[Category:Detector lab]] 77b5e091f0fd10025a3554382f0cb8c336976cb3 3D Detector Activities 0 23 108 2009-02-19T13:30:00Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... 439ace0c5c304212e74161bc613f425fe1272b3e 129 2009-02-20T10:21:55Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... [[Category:Detector lab]] d23588623ba439471f0116a09c80098c15510c12 Sandbox 0 49 109 2009-02-19T14:16:43Z Ift 1 New page: her kan en teste ut wikitext text/x-wiki her kan en teste ut a396161c571c0f5d4425d45d5666c08ecf3c2f93 110 2009-02-19T14:18:15Z Ift 1 wikitext text/x-wiki her kan en teste ut [[Category:Test]] f2c5d781af9f3ed5d47b6205f78628ae33f0aacb Main Page 0 1 111 2009-02-19T14:23:37Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] == Getting started == Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software. * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 55c85c5ffddf44dbc63313f421864587f0d59c0b 124 2009-02-20T07:20:44Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] == Komme i gang == * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide|Bruksanvisning for in Mediawiki] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] b471034872aadff7cacf64875045b08d31fa2a6d 125 2009-02-20T07:21:11Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] == Komme i gang == * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 6516cd50d14cc1f7719d867bc4583a3e754a088a Busy Box and related 0 3 112 2009-02-19T14:48:45Z Nfyku 4 wikitext text/x-wiki == Overview == The Busy Box is located in the DAQ Counting Room. Its purpose is to halt the data taking when the system is saturated with event data. When the multievent buffers in the Front End Electronics run full, the Busy Box asserts a busy-signal to the Local Trigger Unit which halts the issuing of new triggers. The the busy-signal will be deasserted once there are available buffers. To calculate the number of used mulitevent buffers the Busy Box listens to the trigger system to see which events have been triggered, and then poll all the DRORCs to see which events have been transfered to DAQ. === Download Section === [[Category:Alice]] 6e3f3e8c2376af20dc986affc265fb34728ab8d8 113 2009-02-19T14:50:46Z Nfyku 4 wikitext text/x-wiki == Overview == The Busy Box is located in the DAQ Counting Room. Its purpose is to halt the data taking when the system is saturated with event data. When the multievent buffers in the Front End Electronics run full, the Busy Box asserts a busy-signal to the Local Trigger Unit which halts the issuing of new triggers. The the busy-signal will be deasserted once there are available buffers. To calculate the number of used mulitevent buffers the Busy Box listens to the trigger system to see which events have been triggered, and then poll all the DRORCs to see which events have been transfered to DAQ. === Download Section === [[Category:Trigger]] 4bcb5088b5e982031ebe11c4038a1b21dc8c30ed 114 2009-02-19T15:07:04Z Rbo021 13 wikitext text/x-wiki == Overview == The Busy Box is located in the DAQ Counting Room. Its purpose is to halt the data taking when the system is saturated with event data. When the multievent buffers in the Front End Electronics run full, the Busy Box asserts a busy-signal to the Local Trigger Unit which halts the issuing of new triggers. The the busy-signal will be deasserted once there are available buffers. To calculate the number of used mulitevent buffers the Busy Box listens to the trigger system to see which events have been triggered, and then poll all the DRORCs to see which events have been transfered to DAQ. === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Category:Trigger]] 87bdc380f3e99df38c2f2cea37fca1f1f3a1b61e 116 2009-02-19T19:13:13Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one of these conditions is true: Buffers in Fec are full, upon receiving a trigger sequence from TTC or when the TTC sends a global reset to the Fee. The BusyBox is located in the DAQ counting rom. === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Category:Trigger]] 5317d69cad52e7694dd7ecddc4e7027e07ce7f99 118 2009-02-19T19:21:58Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one of these conditions is true: Buffers in Fec are full, upon receiving a trigger sequence from TTC or when the TTC sends a global reset to the Fee. The BusyBox is located in the DAQ counting rom. === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Category:Trigger]] 58777e99ed6b43bc791c771d6d2ff90796a315bd 120 2009-02-19T19:24:25Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one of these conditions is true: Buffers in Fec are full, upon receiving a trigger sequence from TTC or when the TTC sends a global reset to the Fee. The BusyBox is located in the DAQ counting rom. === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Trigger]] ee3f6445cba18ab11d5c51066305067adc3c05a4 122 2009-02-19T19:27:25Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one of these conditions is true: Buffers in Fec are full, upon receiving a trigger sequence from TTC or when the TTC sends a global reset to the Fee. The BusyBox is located in the DAQ counting rom. === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Trigger]] bb9b85e330cd7137417ddb3c37bfcba648e6fc90 File:Master thesis magne munkejord.pdf 6 50 117 2009-02-19T19:17:37Z Rbo021 13 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Jalme phd-thesis.pdf 6 51 119 2009-02-19T19:22:23Z Rbo021 13 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Microelectronics group 0 25 123 2009-02-20T07:07:34Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphuics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System [[Category:Mikroelektronikk]] 323300863d0069026c2f4b62fa15c59a6d43aa5c Electronics for the Time Projection Chamber (TPC) 0 4 126 2009-02-20T09:21:42Z Stud4729 6 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] <br><br> == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.2.bin armboot_v2.2.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3.bin armboot_v2.3.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://www.ift.uib.no/~alme/wiki/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://www.ift.uib.no/~alme/wiki/xilinx_hwicap.o xilinx_hwicap.o] | [http://www.ift.uib.no/~alme/wiki/loop.o loop.o] | [http://www.ift.uib.no/~alme/wiki/readme.txt readme.txt] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.4.bin armboot_v2.4.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.5.bin armboot_v2.5.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.6.bin armboot_v2.6.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.61.bin armboot_v2.61.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.62.bin armboot_v2.62.bin] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://www.ift.uib.no/~alme/wiki/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/~alme/wiki/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://www.ift.uib.no/~alme/wiki/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://www.ift.uib.no/~alme/wiki/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/~alme/wiki/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://www.ift.uib.no/~alme/wiki/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://www.ift.uib.no/~alme/wiki/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://www.ift.uib.no/~alme/wiki/vreg.jed vreg.jed]<br> ispVM System Project File: [http://www.ift.uib.no/~alme/wiki/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br><br> === Download Section === [http://www.ift.uib.no/~alme/wiki/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://www.ift.uib.no/~alme/wiki/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://www.ift.uib.no/~alme/wiki/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://www.ift.uib.no/~alme/wiki/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://www.ift.uib.no/~alme/wiki/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://www.ift.uib.no/~alme/wiki/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://www.ift.uib.no/~alme/wiki/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://www.ift.uib.no/~alme/wiki/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://www.ift.uib.no/~alme/wiki/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://www.ift.uib.no/~alme/wiki/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://www.ift.uib.no/~alme/wiki/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://www.ift.uib.no/~alme/wiki/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://www.ift.uib.no/~alme/wiki/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://www.ift.uib.no/~alme/wiki/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://www.ift.uib.no/~alme/wiki/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://www.ift.uib.no/~alme/wiki/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] <br><br> == Radiation related issues == TBA f82e6cda1045ada6f54059263e08559ad0cad1bd PET Project 0 22 127 2009-02-20T10:21:22Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET senter at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == Characterisation Cell == == Characterisation setup and results == [[Category:Detector lab]] 289bd6091e03e97912ef3e25e400685951e7a712 Calorimeter Activities 0 24 128 2009-02-20T10:21:39Z Dfe002 7 wikitext text/x-wiki == General information == Information about ILC, CALICE and calorimeter detectors can be found here: * http://ilcagenda.cern.ch/conferenceOtherViews.py?confId=1049&view=cdsagenda&showDate=all&showSession=all&detailLevel=contribution == Our projects == * About Calorimeter testbeam? * Calorimeter Measurement System? [[Category:Detector lab]] 56746246b340f3dbc1b4fc6edfc2acdd4a9f950e Setting up a local DCS network 0 53 130 2009-02-20T10:41:23Z Dfe002 7 New page: == Introduction == The DCS boards are designed to be connected to a server--or central node--through a network. This server will most importantly be running the InterComLayer. However, the... wikitext text/x-wiki == Introduction == The DCS boards are designed to be connected to a server--or central node--through a network. This server will most importantly be running the InterComLayer. However, the network will also allow remote logon to the boards using SSH, as well as providing them with access to remote NFS-shares. The network is preferably set up and managed with central configuration tools, such as DHCP and DNS. Configuring each board locally will in most cases be very inconvenient, particuarly as all boards are supposed to be descriminated solely by their hardware board numbber--not by local configuration files. This page will outline how such a network is set up. == DHCP configuration == To reach the outside world, the DCS boards will need an IP-address. This they will obtain from the DHCP server. The first thing they do when they are woken up and want to set up their network interface, is to send a querry about it. The DHCP server can identify clients asking for IP-addresses on their hardware--or MAC--address. For networks based on Ethernet, this is always a unique 48 bit identifier. For the special case of the boards, the first 24 bits are 40:EA:54. The last 24 is the board number. In the setup we propose here, the board number will also be used as part of the IP-address and hostname. We will be using a private class A network, 10.0.0.0, allowing for 24 bits of client address space. 16 bits in the range 10.1.0.0 to 10.1.255.255 are reserved for the DCS boards. Each of them will have an etry in /etc/dhcpd.conf: host dcs0000 { hardware ethernet 40:EA:54:00:00:00; fixed-address 10.1.0.0; } Further, we reserve the range 10.0.1.0 to 10.0.1.255 for registered devices (servers, workstations, laptops, etc.), and 10.0.2.0 to 10.0.2.255 for unregistered devices. The former will be registered in dehcpd.conf, hence given fixed IP-addresses, while the later are not, and will have to suffice with random addresses in the mentioned range. Any but the most temporary devices are encouraged to be registered. The DHCP-server in this example will also act as a gateway to the outside world. We will discuss this in greater detail later. Here we will only cover the implications for the configuration of DHCP. The sever will thus have two network interfaces--one for the private net, and one for the external. Addresses for the external will be provided by another server with which we are only concerned as a mere client. Our DHCP-server can, of cource, in principle hand out addresses on both interfaces--definitely not what we want. Thus, the important issue here is to prevent this from ever happening. As we are a normal client on the external network, we do in principle not even know anything of the parameters of the external network until we have received this information from the DHCP-server of the external network. However, it is in most cases safe to assume the subnet and netmask will reamin the same as long as we connect to the same physical network. This information is all we need. We define this network in dhcpd.conf, but without any pool of addresses to hand out, effectively dissableing our server from answering dhcp-requests on this interface. subnet 128.141.0.0 netmask 255.255.0.0 { not authoritative; } In our case the IP-address of gateway and DHCP-, DNS- and time-server is all 10.10.10.10. One may choose to spread these services to several machines, but for a small test-network like this, performance and up-time are not a great concern. In a final setup, it might be a consideration, though. We have defined these servies as options in the begining if the file. The essential sections now become like this: # DHCP set-up for DCS private network ddns-update-style none; subnet 10.0.0.0 netmask 255.0.0.0 { authoritative; allow booting; allow bootp; default-lease-time 3600; max-lease-time 7200; ddns-update-style none; #Get hostname from host entries # use-host-decl-names on; #Get hostnames from DNS get-lease-hostnames on; option domain-name "feenet"; option routers 10.10.10.10; option domain-name-servers 10.10.10.10; option time-servers 10.10.10.10; option ntp-servers 10.10.10.10; option nntp-server 10.10.10.10; option broadcast-address 10.255.255.255; option subnet-mask 255.0.0.0; pool { #Reserved for registered devices - not DCS boards! range 10.0.1.0 10.0.1.255; deny unknown-clients; boot-unknown-clients off; } pool { #Reserved for _not_ registered devices - not DCS boards! range 10.0.2.0 10.0.2.255; allow unknown-clients; boot-unknown-clients on; } pool { #Reserved for DCS boards - must be registered! range 10.1.0.0 10.1.255.255; deny unknown-clients; boot-unknown-clients off; } } subnet 128.141.0.0 netmask 255.255.0.0 { not authoritative; } group { host dcs0000 { hardware ethernet 40:EA:54:00:00:00; fixed-address 10.1.0.0; } host dcs0001 { hardware ethernet 40:EA:54:00:00:01; fixed-address 10.1.0.1; } } The entries for most of the DCS boards have been excluded in a effort to save space. A complete, working file (tested on SLC3) can be found on [http://www.ift.uib.no/~dagtl/dhcpd.conf http://www.ift.uib.no/~dagtl/dhcpd.conf]. For details concerning configuring the DHCP-server, please refer to "man 5 dhcpd.conf", "man dhcpd" and "man dhcp-options". == DNS configuration == As we know, all devics on a IP-network is identified by its IP-address. This is a numeric reference. While computers generally prefer this naming scheme, the same can not be said on the account of human beings, we prefer names that make "sense". The purpose of the DNS server is to map such "sane names" to IP-addresses--and vice versa. As the name imply, the DNS is centered around ''domains''. They are organized into a hierachy. For our small network, we will only explore a small fraction of the capabilities of the DNS. We will only have one domain, to be called ''feenet''. The main file to configure is /etc/named.conf. We will have to add two more sections to it: zone "feenet" { type master; file "feenet.zone"; }; zone "10.in-addr.arpa" { type master; file "10.in-addr.arpa.zone"; }; Further, the two files feenet.zone and 10.in-addr.arpa.zone have to be created. They shall be located at the rather awkward directory /var/named/chroot/var/named/. The first will handle the forward address resolution, i.e. names to numbers, while the last will take care of the reverse address resolution--numbers to names. It is important that these two files are kept consistent; so that names and numbers have a one-to-one relation! Without forther delay we will present them in order: $TTL 86400 @ IN SOA feenet. root.master.feenet. ( 16 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; ttl ) IN NS master.feenet. master IN A 10.10.10.10 dimdns IN CNAME master.feenet. tpc-fee_0_02_1 IN A 10.1.0.0 dcs0000 IN CNAME tpc-fee_0_02_1.feenet. dcs0001 IN A 10.1.0.1 and: $TTL 86400 @ IN SOA feenet. root.master.feenet. ( 12 ; serial 28800 ; refresh 14400 ; retry 3600000 ; expire 86400 ; ttl ) IN NS master.feenet. 10.10.10 IN PTR master.feenet. 0.0.1 IN PTR dcs0000.feenet. 1.0.1 IN PTR dcs0001.feenet. Once again, we have only included the essential head section, including the first few clients. The mayority of the clients are left out, as they are a mere repetition of the first. The complete files are available from [http://www.ift.uib.no/~dagtl/feenet.zone http://www.ift.uib.no/~dagtl/feenet.zone] and [http://www.ift.uib.no/~dagtl/10.in-addr.arpa.zone http://www.ift.uib.no/~dagtl/10.in-addr.arpa.zone]. Links to these two files has to be present in /var/named. If we take a closer look at the dhcpd.conf file, we notice it has been set up to obtain the host names from the DNS server. Alternatively, it can use the name provided for each separate host. However, this last approach will put us in the trouble of manually keeping the the DNS and DHCP host name configurations synchronized, whereas the initially suggested method will only require updates to be made to the DNS. We can also provide the DCS boards with aliases. For example, DCS borad number 0000, with IP address 10.1.0.0, has been given the name tpc-fee_0_02_1.feenet as its "real" name, and dcs0000.feenet as an alias. The first name is based on its geographical location in the TPC detector, wheras the second is derived from the board number. We can choose to address it using the name we at any given time find most convenient. It is important to point out that only the real name will be returned on reverse name lookups. The name of the FeeServer running on the DCS board will be the same as the board's geographical name, or more precicely, the geographical name ''is'' the FeeServer name. The purpose of using this as the main name, is to allow the name of the FeeServer to be set from the host name. We want the DCS boards to be completely configured from a server. This is an easy way to ''transfer'' the name to the DCS board. Further information on configuring DNS can be found in "man 5 named.conf" and "man dhcpd". === DNS entry generation === In order to simplify the DNS configuration the entries can be generated by the script ''names-feenet.sh''. The script can be downloaded from the [[DCS Download#Network setup Tools | download page]]. Usage: <tt>names-feenet.sh [OPTION] [configuration file]</tt> The script was written for the TPC setup, so all the default values concern the TPC. All values can be changed be command line parameters in order to customize the output. The routing can either be created from a configuration file (see below for format) or by looping over the geographical address range or board number range. ==== General Options ==== --configure-named configure the name deamon, root priviledges required --add-configuration add the configuration to the existing, by default all all DCS board entries are deleted from the existing configuration. --print-names print hostname table to stdout --print-backrouting print back routing table to stdout --enumerate simply enumerate the boards without building hostnames with geographical address --file=<file path> read configuration from file ==== Detector layout options ==== The hostnames are built from 3-dimensional geographical addresses, e.g. <tt>tpc-fee_0_04_3</tt>. The number of boards in each direction can be specified by the --nof[X,Y,Z] option --nofX=<x> TPC default 2 --nofY=<y> TPC default 18 --nofZ=<z> TPC default 6 The number of digits for each coordinate. Missing digits are filled with preceeding 0's. --digitsX=<d> TPC default 1 --digitsY=<d> TPC default 2 --digitsZ=<d> TPC default 1 Range of board numbers: specify the first and/or the last board. --min-boardno default 1 --max-boardno default unlimited --basename=<name> TPC default: tpc-fee --defaultname=<name> default: dcs Board enumeration skips the generation of the geographical addresses and generates just names with the default name --enumerate Network settings --netaddr=<address> network base address, default 10.0.0.0 --netmask=<mask> network mask, default 255.0.0.0 ==== Format of the configuration file ==== The configuration file is a simple text file, each line contains board number and the 3 coordinates. Comments can be included as usual by marking with '#'. # sample configuration for the TPC # boardno side sector partition 11 1 6 4 1 1 0 5 10 0 0 0 12 0 1 5 13 1 7 3 105 0 9 5 ==== Examples ==== [tpcfee01] ~ > names-feenet.sh --print-names --nofX=1 --nofY=1 tpc-fee_0_00_0 IN A 10.1.0.1 tpc-fee_0_00_1 IN A 10.1.0.2 tpc-fee_0_00_2 IN A 10.1.0.3 tpc-fee_0_00_3 IN A 10.1.0.4 tpc-fee_0_00_4 IN A 10.1.0.5 tpc-fee_0_00_5 IN A 10.1.0.6 dcs0001 IN CNAME tpc-fee_0_00_0 dcs0002 IN CNAME tpc-fee_0_00_1 dcs0003 IN CNAME tpc-fee_0_00_2 dcs0004 IN CNAME tpc-fee_0_00_3 dcs0005 IN CNAME tpc-fee_0_00_4 dcs0006 IN CNAME tpc-fee_0_00_5 [tpcfee01] ~ > names-feenet.sh --print-names --enumerate --min-boardno=65 --max-boardno=70 dcs0065 IN A 10.1.0.65 dcs0066 IN A 10.1.0.66 dcs0067 IN A 10.1.0.67 dcs0068 IN A 10.1.0.68 dcs0069 IN A 10.1.0.69 dcs0070 IN A 10.1.0.70 [tpcfee01] ~ > names-feenet.sh --print-names --basename=phos-fee --nofX=1 --nofY=1 --nofZ=4 --digitsY=1 --min-boardno=128 phos-fee_0_0_0 IN A 10.1.0.128 phos-fee_0_0_1 IN A 10.1.0.129 phos-fee_0_0_2 IN A 10.1.0.130 phos-fee_0_0_3 IN A 10.1.0.131 dcs0128 IN CNAME phos-fee_0_0_0 dcs0129 IN CNAME phos-fee_0_0_1 dcs0130 IN CNAME phos-fee_0_0_2 dcs0131 IN CNAME phos-fee_0_0_3 [tpcfee01] ~ > names-feenet.sh --print-names /tmp/configuration.txt tpc-fee_0_00_0 IN A 10.1.0.10 tpc-fee_0_01_5 IN A 10.1.0.12 tpc-fee_0_09_5 IN A 10.1.0.105 tpc-fee_1_00_5 IN A 10.1.0.1 tpc-fee_1_06_4 IN A 10.1.0.11 tpc-fee_1_07_3 IN A 10.1.0.13 dcs0001 IN CNAME tpc-fee_1_00_5 dcs0010 IN CNAME tpc-fee_0_00_0 dcs0011 IN CNAME tpc-fee_1_06_4 dcs0012 IN CNAME tpc-fee_0_01_5 dcs0013 IN CNAME tpc-fee_1_07_3 dcs0105 IN CNAME tpc-fee_0_09_5 == NFS configuration == We have to provide the DCS boards with disk space shared over the network. The purpose of this is twofold. Firstly, the flash memory occupied by the Linux systems on the DCS boards has a very limited capacity--only 8 megabytes. This will allow for the core system, but is marginal for storing FeeServer and log files. Secondly, flash memory is weakened for each write cycle. It is therefore desireable to reduce write operations to a minimum. This is particuarly true for the log files, which are constantly updated. Two directores should be provided, one with read-write (rw) access, and one read-only (ro). The FeeServer and other binaries/files the DCS bords are supposed ''not'' to write to should go in the ro-directory. Log files and similar files should be placed in the rw directory. As the ro directory we use /nfs_export/fee-net/, and as rw we use /dcs-share. A separate directory for the log files is provided as a subdirectory: /dcs-share/fee-log. The totally different locations of the ro and rw directories might seem odd. This is partly due to historical reasons (the rw directory was early introduced for developent, the ro was introduced when "order" was needed), and partly practical (the rw is much more frequently accessed during debug/development than the ro). Everybody has to be given all rights to the /dcs-share and /dcs-share/fee-log directories. The configuration of the NFS shares are made in the /etc/exports file: /dcs-share 10.0.0.0/255.0.0.0(rw,sync,no_wdelay,all_squash) /nfs_export/fee-net 10.0.0.0/255.0.0.0(ro,sync,no_wdelay,all_squash) The file is also available from [http://www.ift.uib.no/~dagtl/exports http://www.ift.uib.no/~dagtl/exports]. During init, the DCS boards will try to run a startup file for the FeeServer from the /nfs_exports/fee-net directory. It is thus important that the directory is populated properly with these files. They can be downloded from [http://www.ift.uib.no/~dagtl/fee.tgz http://www.ift.uib.no/~dagtl/fee.tgz]. == NAT configuration == NAT and IP forwarding will make the external network (Internet) accessible from the DCS network. The DCS netwok is however not accessible from the Internet. The DCS borads and other computers on the DCS network is "hiding" behind the gateway, from the outside it appears as if all requests originate from the gateway. For the computers on the inside, at the other hand, will not notice the precence of the gateway. NAT and IP forwarding is configured using IPTABLES. A simple script will set ip up appropriately, assuming eth0 is Internet, and eth1 DCS network: #!/bin/bash iptables --flush iptables --table nat --flush iptables --delete-chain iptables --table nat --delete-chain iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE iptables --append FORWARD --in-interface eth1 -j ACCEPT echo 1 > /proc/sys/net/ipv4/ip_forward The script can also be downloaded from [http://www.ift.uib.no/~dagtl/masq http://www.ift.uib.no/~dagtl/masq]. It is wise to load this script file on startup, preferably from /etc/rc.d/rc.local. [[Category:DCS]] 758ffc3f3d42a4a8c8e0d9ec1c2dc7abd97b75a5 Setup of low-level DCS for TPC Front-end electronics 0 54 131 2009-02-20T10:41:43Z Dfe002 7 New page: [[Category:DCS]] == General layout == The main idea is to provide a local network with all necessary services like DHCP, name server, time server aso. for the DCS boards. The name server ... wikitext text/x-wiki [[Category:DCS]] == General layout == The main idea is to provide a local network with all necessary services like DHCP, name server, time server aso. for the DCS boards. The name server running on the server machine provides the link between the board MAC address and the Board hostname. The server machine is connected via a second network to the CERN network and allows IP forwarding which means all machines on the local net have access to the outer network but not the other way. Logging on to the DCS boards is only possible from the server machine. The server machine runs also a DIM name server and has also the IntercomLayer installed. See below for a description how to start/configure. Please refer to the description of [[Setting up a local DCS network]] to get further information on the technical details. === DIM in distributed networks === In general it is possible to run the DIM name server on a gateway machine with to networks. The ports are connected to both networks. Since DIM relies on a direct connection between servers and clients, it is in a setup like this not possible to connect client and servers running on different sub networks. But is possible to have a relay on the gateway machine running, in out case this is the Intercom Layer. This was there principle, but we didn't get it running this way. We suspect that it is due to firewall rules since there gateway machine was registered as a portable and not as a fixed machine. This will change. So far the Windows machine running PVSS must thus be connected to the local network. === Naming scheme of the DCS boards === Currently the name and dhcp servers can provide hostnames/ ip addresses to the boards 061 to about 250. The default name is like ''dcs0061''. In order to introduce a geographic naming scheme the Boards will be named tpc-fee_<side>_<sector>_<partition> e.g. tpc-fee_0_09_03 Currently the DCS boards 61 to 69 get some arbitrary names tpc-fee_*_*_*. The hostname dcs0xxx can still be used to log on. == Accounts on the master node == A local user '''fee''' can be used for general purpose tasks like sending commands to the FeeServers (e.g. configuration files) or monitor the DIM system, ask Dag, Roberto or me for the password. In addition we will enable a couple of CERN accounts in order to give access to developers. == Network disks == The master provides network disks for the DCS boards. The /dcs-share folder on the master is mounted on /dcs-share on all the boards. The directory is mounted in read/write mode. In order to give write access also to the boards you have to make sure that the access rights for the certain sub-directory is set to rwx for all access groups. == DIM setup == === DIM name server === Choose ''dimdns'' as DIM_DNS_NODE on the local network. Choose the name of the server machine (e.g. tpcfee02.cern.ch) in order to access it from the outside. The latter has to be tested so far but it was confirmed by the DIM developers that this should work. === Looking at the system with a DIM tool === On the master just type ''dimInformationDisplay'' and you will get the unix DIM monitoring tool. Choose View -> All servers ==== Investigating services provided by the Server ==== in order to display all servers known to the system. By right click on the server icon you can choose ''Services'' and you will get a window with the list of the services provided by the server. Select e.g XX_TEMP which is the temperature of FEC XX and press ''View''. Press ''Subscribe'' in the window popping up. '''Note''': a value -2000 -2E+02 means ''no link'', which could be that the FEC is in state off (service XX_STATE is 0) ==== Limitations ==== The Dim Information Display can only show one value at a time. So, this is only suitable for debugging. The full monitoring will be done from PVSS. == The Intercom Layer == When logged on to the master node, start the Intercom Layer by typing startInterComLayer This will start the ICL in the current directory. The ICL will look for the following configuration files in the rundir: Profile.txt Servers.txt Services.txt The ''startInterComLayer'' command is based on the default TPC configuration files, which contain all the 216 servers. Several options can be used to customize the configuration: * '''--help''': print a command description * '''--stdconf''': run in the default configuration * '''--server=<pattern>''': run with a sub-set of the standard configuration. ''pattern'' can be used to select some servers from the default configuration. The wildcard '*' can be used for group addressing. If no server of the default configuration matches the pattern, the pattern is interpreted as server name. Multiple invocations of the ''--server'' option specify a list of servers * '''--rundir=<dirname>''': specify the rundir, the default dir is <tt>/tmp/${USER}/ICL-rundir</tt>. # start only for server tpc-fee_0_00_0 startInterComLayer --server='tpc-fee_0_00_0' # start only for all server on side 1 startInterComLayer --server='tpc-fee_1_*_*' # start only for all server in sector 10 on side 0 startInterComLayer --server='tpc-fee_0_10_*' # start only for servers in sector 10 and 11 on side 0 startInterComLayer --server='tpc-fee_0_1[0,1]_*' # start only for servers dcs0070 and dcs0071 startInterComLayer --server=dcs0070 --server=dcs0071 To start it permanently in the background: screen -S InterComLayer startInterComLayer <options> & In the current configuration the ICL tries to connects to all servers following the naming scheme tpc-fee_*_*_*. For each it subscribes to the services * MAIN_STATE * XX_STATE * XX_TEMP * XX_AV * XX_AC * XX_DV * XX_DC, where XX denotes the FEC. Branch A FECs 00 to 12, Branch B FECs 16 to 27. === Stoping the InterComLayer === The ICL can be killed by any user by executing: sudo killInterComLayer == Stand alone FEC monitoring on the DCS board == A stand-alone monitoring script exploiting the rcu-sh can be used to read out Data Points from the Monitoring and Safety Module. After logon to a DCS board try: # gives you a help tpc-feemonitor.sh --help # reads default services on FEC A01 tpc-feemonitor.sh --fec=A01 # monitors default services on FEC A01 5 times with sleep of 10 sec tpc-feemonitor.sh --fec=A01 --loop=5 --sleep=10 # reads temperature on FEC A01 tpc-feemonitor.sh --fec=A01 --data-point=TEMP Unfortunately the script interpreter on the ARM linux is quite slow, so the processing takes a little while before the actual read-out starts. Taking all FECs is only suitable if you want to start a longer monitoring process. The tool can be used to create rcu-sh scripts for the read-out of individual or an assembly of FECs. This script can than simply be re-used on and on with the rcu-sh, e.g. rcu-sh b <script path> -s -l 5 -w 1 sec '''Note:''' The tool doesn't switch on the continuous conversion on the FEC board controllers. The default value for the TEMP data point i 40. If this doesn't change, you should suspect, that the continuous conversion is off. # broad-cast to all FECs to switch on continuous conversion rcu-sh w 0xc411 0x7ff == FeeServer == If the network disks can be mounted, the FeeServer starts at bootup. It gets the hostname of the board as server name. === Provided services === Each FeeServer publishes the following the services: * MAIN_STATE * XX_STATE * XX_TEMP * XX_AV * XX_AC * XX_DV * XX_DC, where XX denotes the FEC. Branch A FECs 00 to 12, Branch B FECs 16 to 27. A FEC can be activated or deactivated by sending a high level command to the FeeServer: <fee> FEESVR_SET_FERO_DATA32 XX_STATE 0/1 </fee> This issues the ''FEESVR_SET_FERO_DATA'' command to the channel ''XX_STATE'', where ''XX'' has to be replaced by the FEC number and either 1 or 0 have to be used to enable and disable the FEC respectively. E.g. with the ''feeserver-ctrl'' echo '<fee> FEESVR_SET_FERO_DATA32 00_STATE 1 </fee>' | feeserver-ctrl --server tpc-fee_0_00_0 === Command line tool for sending of commands to a FeeServer === The ''feeserver-ctrl'' program is ment to test and debug the command execution on the FeeServer and the RCU sequencer. The tool reads from std input or a file and writes the result to std output or a file. Sending a configuration can be done by cat my_configuration | feeserver-ctrl --server <servername> # e.g. cat my_configuration | feeserver-ctrl --server tpc-fee_0_00_0 There are further options to send control commands to the FeeServer CE, try feeserver-ctrl --help feeserver-ctrl --ce-command help A few ''ce commands'' are picked out because of their importance during debugging, replace ''<server name>'' by the name of the server you want to connect to: # set the logging level of the ControlEngine # level 0: all # level 1: debug or higher (essentially the same as ''all'') # level 2: info or higher (default) # level 3: warning or higher feeserver-ctrl --server <server name> --ce-command CE_SET_LOGGING_LEVEL <level> # enable the service update feeserver-ctrl --server <server name> --ce-command CEDBG_EN_SERVICE_UPDATE 1 # disable the service update feeserver-ctrl --server <server name> --ce-command CEDBG_EN_SERVICE_UPDATE 0 === Log files of the FeeServers === The FeeServers publishs all messages on the message channel provided by the FEE API. In addition, logging messages are written to log files. They are available on the master node at /dcs-share/fee-log/<server name>. To listen for incoming messages do tail -f <file name> Setting the logging level of the FeeServer CE to a higher verbosity can be done by feeserver-ctrl --server <server name> --ce-command CE_SET_LOGGING_LEVEL 0 == Configuration of the Name server (DNS) == The DNS provides the hostname to the DCS board. The hostname is automatically used as FeeServer name. The hostnames are built from 3-dimensional geographical addresses, e.g. <tt>tpc-fee_0_04_3</tt>. To change the DNS configuration create a simple routing file containing board number and geographical address, e.g. # sample configuration for the TPC # boardno side sector partition 11 1 6 4 1 1 0 5 10 0 0 0 12 0 1 5 13 1 7 3 105 0 9 5 and configure the fee-network fee-names.sh --configure-named --add-configuration <config file> where ''<config file>'' has to be replaced by the file name. Further information can be found on the [[Setting up a local DCS network#DNS entry generation | DCS network]] page. == The RCU Gui == The RCU Gui developed by Christian H. Christensen is installed on the server machine. The Gui can connect to one FeeServer at a time, but several Gui's can be started at the same time. To start the Gui logon the server machine as user ''fee'' and type: rcugui fee://<servername> where ''<servername>'' has to be replaced by the name of the FeeServer you want to connect to, e.g. rcugui fee://dcs0080 The Gui provides comfortable access to the RCU memories as well as to the FECs. == The setup in the RCU lab == A laptop was used as server machine (master). The built-in network (eth0) is used for the uplink to the CERN network. The hostname is tpcfee02.cern.ch with IP address 137.138.54.220. == The setup for the clean room == An identical system was set up on a Linux PC providing to Ethernet interfaces. The machine has the hostname ''tpcfee01.cern.ch'' and is currently configured with IP :137.138.253.151 for the RCU lab. After completion and testing of the setup in the lab it will be moved to the clean room together with the big switch and one of the Windows machines from the DCS group intended to host the PVSS. 693c163b9c94efbcf6f354fef6a07aa8034b400f DCS Tutorial 0 55 132 2009-02-20T10:42:02Z Dfe002 7 New page: [[Category:DCS]] back to:[[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] This page explains the different components and tools which exist in... wikitext text/x-wiki [[Category:DCS]] back to:[[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] This page explains the different components and tools which exist in the FeeCom chain and how to run them. Those are in particular: __TOC__ == DIM Name Server == A dedicated DIM name-server takes control over all the running clients, servers and their services available in the system. Each server registers at startup all its services and command channels. For a client the location of a server is transparent. === How to get the software === Take the latest package from [http://dim.web.cern.ch/dim the dim web page] and follow the instructions to build the package for your platform. If you are running Linux and have problems to compile the package, the following might help you. === Compile the DIM package for Linux === Recently we encountered problems when compiling the DIM package. Although the environment variables had been set as proposed in the README*.txt, the setup script didn't work. The following recipe is working on Scientific Linux CERN, but for sure it should be the same for other distributions. * go to the directory of the dim package: cd <path to dim package> * set a couple of environment variables setenv DIMDIR `pwd`/linux setenv OS Linux setenv ODIR linux * compile the DIM library make -f makefile_dim === Starting the Name server === You might need to set the '''LD_LIBRARY_PATH''' variable to allow the system to find the dim shared library. cd <your path to the dim package> setenv LD_LIBRARY_PATH `pwd`/linux ./linux/dns You will get a message like PID 25703 - Wed Feb 15 13:51:15 2006 - DNS (pid 25703) starting up on kjekspc3.ift.uib.no == DIM Information Display == The DIM Information Display is a tool available for Linux which allows to monitor a DIM system. It is contained in the package you downloaded from the dim web page. * if you want to compile DID follow the instructions in the previous section and do in addition make -f makefile_did '''NOTE:'''The DID needs some libraries to link against which come usually with the X11 system, but on some distributions they are missing. Note that you can start the DID from another machine which might provide all the necessary libraries. Or think about a system update on your machine. Make sure that the Motif library is installed on your system. === Running the DIM Information Display === Again, you might need to set the '''LD_LIBRARY_PATH''' variable to allow the system to find the dim shared library. In addition, the '''DIM_DNS_NODE''' variable has to be set. This variable specifies the location where the DIM framework will look for the DIM Name Server. cd <your path to the dim package> setenv LD_LIBRARY_PATH `pwd`/linux setenv DIM_DNS_NODE <your dns host> ./linux/did Choose ''View -> All Servers'', now you should at least see the Name Server and your DIM servers if there are any. The documentation is not very extended, but you can get at least a glimpse at the [http://dim.web.cern.ch/dim/dim_tools.html dim web page]. == FeeServer == === Compilation === Download the latest version from then [[DCS Download | download page]]. The package relies on the usual Linux installation procedure ''configure'', ''make'' and ''make install''. Unpack the package and have a look into the '''README''' file. ''./configure --help'' and ''./configure --help=short'' provides information on the available options. Read more about the compilation process [[FeeServer#Compilation | here]]. ==== Compilation for the DCS board ==== You need a cross compiler and have to specify the following options to ''./configure'' * '''--host=arm'''(mandatory) * '''--prefix=<''dir''>'''(optional) specify the location where the executable will be copied with ''make install''. <br> You should consider to make this directory available to the DCS board via NFS. The default ''prefix'' is set to '''/nfs_export/dcscard/''${USER}'' ''' if this directory exists, otherwise to the current directory. Note that the files will be "installed" in '''<''prefix''>/bin''' or '''<''prefix''>/bin''' respectively. * '''--enable-<''detector''>''' for detector specific implementations ==== Compilation for normal PC Linux ==== ''configure'' - options * '''--enable-rcudummy'''(optional) this switches off all hardware access which might make life easier since you will not be bothered with bunches of error messages. A correct state handling will be implemented soon. * '''--enable-<''detector''>''' for detector specific implementations * '''--prefix=<''dir''>'''(optional) specify the location where the executable will be copied with ''make install''. <br> The default ''prefix'' is set to the current directory. Note that the files will be "installed" in '''<''prefix''>/bin''' or '''<''prefix''>/bin''' respectively. == InterComLayer == == PVSS == == U2F Library/API == === U2F API specification === === feeserver-ctrl command line tool === == RCU GUI == 0274bc6a9ea6c974e578c32cd801b3271fceaa8e DCS Download 0 56 133 2009-02-20T10:44:18Z Dfe002 7 New page: [[Category:DCS]] [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] __TOC__ Since there are several packages required for a full DCS for Front-e... wikitext text/x-wiki [[Category:DCS]] [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] __TOC__ Since there are several packages required for a full DCS for Front-end electronics this page will accumulate versions which have been testet together. It's also reasonable to have only one place for downloading. == FeeServer == * [http://www.ift.uib.no/~kjeks/download/feeserver-0.9.1-rcu-0.9.2.tar.gz Version 0.9.1 with CE v 0.9.2 for RCU] ** core updated to 0.9.1 ** Logging *** INFO log level removed from core default log level *** log level for initialization is 'Info', after init changed to 'Warning' ** State Machines *** support for temporary states and guard structure added *** Handler for USER defined states added to dispatcher, dynamic transition handling implemented *** high-level commands CE_GET_TRANSITIONS, CE_GET_STATENAME, CE_GET_STATES, and CE_GET_STATE implemented for devices ** MsgBuffer access encapsulated completely in separate class DCSCMsgBuffer *** check of msgBufferInterface driver and intelligent handling of failures ** TPC/RCU *** MAIN state machine corrected according to the lates agreements *** ramping of FECs power on/off, FECs are switched with at least 1 second delay between each other *** apply final naming scheme for FECs if server name follows the naming rule TPC-FEE_x_y_z. *** ACTEL control device added ** Commands *** command set version 4 and 5 *** FEE_CONFIGURE improved: scanning of hardware address and printout, history of pending FEE_CONFIGURE commands ** Misc *** CE_FORCE_CH_UPDATE updates all services beginning with specified string *** service update is stopped during command execution * [http://www.ift.uib.no/~kjeks/download/feeserver-0.8-rcu-0.9.tar.gz Version 0.8.1 with CE v 0.9 for RCU] ** core updated to 0.8.1 ** CE++ interface finnished, fully object oriented CE ** TPC and PHOS CE converted to CE++ ** support and examples for TRD and FMD added ** CE publishs also int and char channels ** Sub-device handling implemented ** ACTIONS can be send to all sub-device state machines ** user defined states added to StateMachine, flexible translation scheme by CEStateMapper object ** rpm support added ** RCU CE *** detector flavors derive from RCU CE base class *** flexible branch layout *** detector specific FEC implementation inherits from FEC base class *** RCU registers published as int channels, currently AFL and ERRST *** switch for 5/8-bit SlowControl interface foreseen, 8-bit access has to be implemented * [http://www.ift.uib.no/~kjeks/download/feeserver-0.7-rcu-0.8.5.tar.gz Version 0.7.6 with CE v 0.8.5 for RCU] ** conversion to feeserver core version 0.7.6 ** command set version 3: access commands for all RCU registers added ** file descriptor leak in shell program execution fixed ** benchmark output enabled by ''--enable-benchmark'' ** FEC simulation implemented, enabled by ''--enable-fecsim'' ** all probing for RCU firmware features and FEC configuration is disabled by default and can be enabled by ''--enable-auto-detection'' * [http://www.ift.uib.no/~kjeks/download/feeserver-0.7-rcu-0.8.tar.gz Version 0.7.3 with CE v 0.8 for RCU] ** CE converted to C++ ** base classes for state machines ** FEE_CONFIGURATION commands implemented ** high-level commands and actions implemented ** FeeServer used in TPC commissioning from May 2006 ** CE log messages both printed to std channels and sent as DIM messages * [http://www.ift.uib.no/~kjeks/download/feeserver-0.7-rcu-0.6.2.tar.gz Version 0.7.3 with CE v 0.6.2 for RCU] ** version of the DCS workshop March 06 ** '''Note:''' this version does not send any log messages from the ''ControlEngine'' through the DIM message channel (will be fixed in the next version). * [http://www.ift.uib.no/~kjeks/download/FeeServer-0.7-rcu-0.5.tar.gz Version 0.7.3 with CE v 0.5 for RCU] == FeeClient == * [http://www.ift.uib.no/~kjeks/download/feeclient-0.6.tar.gz Version 0.6] ** enhanced documentation ** basic structure: ''core,'' ''sample client'', ''utilities'' ** '''NOTE:''' The ''FeeClientLimImp'' class has been renamed to ''FeeSampleClient'' ** support for further CE commands added to ''feeserver-ctrl'' ** [http://www.ift.uib.no/~kjeks/download/feeclient-0.6-doc.tar.gz Documentation of Version 0.6] ** [http://www.ift.uib.no/~kjeks/doc/feeclient Online Documentation of Version 0.6] * [http://www.ift.uib.no/~kjeks/download/feeclient-0.5.tar.gz Version 0.5] ** Includes updated version of FeeClientLibImp, capable of communicating simultaneously with several FeeServers even if they respond in different order than called. ** View README file on how to install package. == InterComLayer == * [http://www.ift.uib.no/~kjeks/download/interComLayer-0.5.tbz Version 0.5.0] ** Note: there have been changes in the naming of the services, FeeServer versions 0.7-rcu-0.5 or later require at least version v0.4.3 of the InterComLayer * [http://www.ift.uib.no/~kjeks/download/interComLayer_v042.tar.gz Version 0.4.2] ** this version of the InterComLayer works only with FeeServers 0.7-rcu-0.4 === Tools === * [http://www.ift.uib.no/~kjeks/download/startInterComLayer.tgz startInterComLayer]: helper script for startup and on-the-fly changes of a default configuration. Description can be found on the [[Setup of low-level DCS for TPC Front-end electronics#The Intercom Layer | TPC FEE setup]] page. == ARM cross compiler == * [http://www.ift.uib.no/~kjeks/download/arm-uclibc-3.3.1-toolchain.tar.bz2 precompiled package] to be unpacked to <i>/usr/local/arm</i> == DCS board software for TPC == === RCU shell === To update the rcu shell on the DCS board unpack the corresponding tar file, e.g. #logon to dcs board cd /tmp wget http://www.ift.uib.no/~kjeks/download/rcu-sh-1.4.tar.gz tar xzvf rcu-sh-1.4.tar.gz -C / * [http://www.ift.uib.no/~kjeks/download/rcu-sh-1.4.tar.gz rcu-sh version 1.4] ** new DCS board firmware v2.2 supported *** writing of compressed data *** faster flash access * [http://www.ift.uib.no/~dominik/files/rcu-sh-1.5.tar.gz rcu-sh 1.5] ** requires driver version 0.6 ** lock functionality enhanced ==== Source code ==== The source code of rcu-sh, drivers and additional RCU Flash memory tools. * [http://www.ift.uib.no/~kjeks/download/rculinux-1.5.tar.gz package version 1.5] === RCU bus driver === To update the rcubus driver on the DCS board unpack the corresponding tar file, e.g. #logon to dcs board cd /tmp wget http://www.ift.uib.no/~kjeks/download/rcubus_driver_0.6-debug.tgz tar xzvf rcubus_driver_0.6-debug.tgz -C / * [http://www.ift.uib.no/~kjeks/download/rcubus_driver_0.6-debug.tgz rcubus_driver version 0.6 debug] ** enhanced and fixed lock functionality === DCS board scripts === * [http://www.ift.uib.no/~kjeks/download/tpc-fecmonitor.sh.tgz tpc-fecmonitor.sh] - rcu-sh script generator for TPC Front-end card monitoring == Network setup Tools == === Name server === * [http://www.ift.uib.no/~kjeks/download/names-feenet.sh.tgz names-feenet.sh] - name server routing generator == Download Archive == Check the [[Download Archive]] if you are interested in ancient stuff. --------- --------- == RCU Gui == [http://cholm.web.cern.ch/cholm/alice/fee/#rcuxx The RCU Gui written by Christian H. Chritensen] == FeeCom software == The core FeeCom software can be found at * [https://www.ztt.fh-worms.de/download/alice/ FeeCom software] can be found at the ZTT (for login contact the ZTT). == Further information and downloads for the ARM linux on the DCS board == * [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html Armlinux] for the DCS board by Tobias Krawutschke b62d45ee2c44a5d14a8b9de17ec0d8e9836b45ef DCS FAQ 0 57 134 2009-02-20T10:44:36Z Dfe002 7 New page: [[Category:DCS]] [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] __TOC__ == General DCS board related questions == === What species of Linux i... wikitext text/x-wiki [[Category:DCS]] [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] __TOC__ == General DCS board related questions == === What species of Linux is running on the DCS board? === The Linux on the DCS board is a compilation of several projects suited for embedded systems * Kernel: [http://www.arm.linux.org.uk/ The ARM Linux Project] with minor changes. Kernel version 2.4.21 * regular programs: [http://www.busybox.net/about.html BusyBox], The Swiss Army Knife of Embedded Linux * C library: [http://uclibc.org/about.html uClibc] === I cant find common UNIX tools like diff on the DCS board === The version of busybox included into the linux during the early days of the DCS board doesn't support commands like od, cmp and diff. An additional package contains those three programs. To install them * download the package [http://www.ift.uib.no/~kjeks/download/dcsboard-addon-0.1.tar.gz dcsboard-addon] * unzip it to the root (/) directory (the archive contains all necessary sub folders) * e.g. on the DCS board do wget -P /tmp/ http://www.ift.uib.no/~kjeks/download/dcsboard-addon-0.1.tar.gz tar xzvf /tmp/dcsboard-addon-0.1.tar.gz -C / === Can I compile programs on the DCS board? === No, the Linux on the DCS board is a light-weight operating system which just provides the environment to run programs. Of course, this could be a compiler, but this doesn't make sense. One uses a cross compiler on another system to build the executables. === What is a cross compiler? === Cross compiling means to compile and build on a build system which is different from the system the program has to run on. Each cpu architecture has its own instruction set, binary format aso. The compiler translates the program source code into machine code for a certain architecture. Most embedded systems (like the one on the DCS board) don't provide fully functional operating systems. The use of a cross compiler is a convenient tool to create executables on another workstation. The Arm Linux on the DCS board uses gcc 3.3.1 configured for arm-uclibc. === How do I install a cross compiler and use it? === The Arm Linux on the DCS board is compiled with gcc 3.3.1 and uses uclibc as standard library. This page gives just a short recipe for the installation. For further details look at the [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html DCS board Arm Linux] page. To install the compiler you have two possibilities: * The precompiled package<br>There is a precompiled package configured for <i>uclibc</i> and <i>/usr/local/arm/3.3.1</i>. The compiler has to be exactly at that place. *# Download the [http://www.ift.uib.no/~kjeks/download/arm-uclibc-3.3.1-toolchain.tar.bz2 package]. *# Create a folder /usr/local/arm on your build machine or ask your system administrator to do it for you and give you write access. *# Unpack the package tar xvjkf arm-uclibc-3.3.1-toolchain.tar.bz2 -C /usr/local/arm * Install the gcc from scratch and configure it for arm linux. There is a helper script on the [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html DCS board Arm Linux] page. In both cases you must add the compilers's binary directory to your search path. For the first it is <i>/usr/local/arm/3.3.1/bin</i>, e.g. # c-shell setenv PATH ${PATH}:/usr/local/arm/3.3.1/bin # or # bash export PATH=${PATH}:/usr/local/arm/3.3.1/bin === How can I copy the executable to the DCS board? === <b>scp <filename> root@<address of the board>:/tmp</b><br> This will place the file in the /tmp directory of the board. The better solution is to mount a network directory. Note that the /tmp directory on the board is erased each time it boots since it is not located in the flash ram. === Where are all the files from the /tmp directory after reboot === You should not place any files you want to keep in the /tmp folder since this is areased after reboot. === How do I mount a network directory on the DCS board? === This is two-fold. An extern machine has to provide the directory and the DCS board has to mount it. # The server, can be any Linux machine the board has access to<br>Usually you need root access to configure the server. #* nfs deamon has to run on the host machine #** start nfs service: <b>/sbin/service nfs start</b> #** stop nfs service: <b>/sbin/service nfs stop</b> #** status information: <b>/sbin/service nfs status</b> #* configure the allowed export directories in <b>/etc/exports</b>, e.g. with a line like<br><b>/nfs_export/dcscard dcs0034(rw)</b><br>the directory '/nfs_export/dcscard' can be mounted by the machine 'dcs0034' in read-write mode #* finally after altering <b>/etc/exports</b> you might have to run <b>exportfs -a</b> in order to update the list of NFS exported file systems # The client, i.e. the DCS board #* create a directory <b>/mnt</b> if it does not exist #* use the command <b>/usr/local/sbin/nfsmount</b> to mount the network directory, e.g.<br><b>/usr/local/sbin/nfsmount <host>:/nfs_export/dcscard /mnt rw</b> #* Of course you can name the mountpoint on the DCS board whatever you want === I can not write to my network directory=== check if * the server allows write access (/etc/exportfs) * the DCS board mounts the network disc in read-write mode * the permissions for the directory on the server allow write access, keep in mind that the applications on the DCS board are running under a different user than usually you are on the host machine, and thus 'others' have to have write access === How can I connect to the DCS board from a Windows computer by using the serial line? === First of all you need to have the proper serial line connector cable [http://www.kip.uni-heidelberg.de/ti/DCS-Board/current/mechanic/RS232cable01.gif Schematics]. In one side of the connector there is a small red dot. This should be connected to the connector on the short egde next to the ttc-fiber connector. Connect it to a free com-port on your pc.<br> In windows use 'hyperterminal' with the following settings: <br> ''Baud Rate:'' 57600<br> ''Data Bits:'' 8<br> ''Parity:'' None<br> ''Stop Bits:'' 1<br> ''Flow Control:'' None == InterComLayer related questions == === What is the InterComLayer? === === Where do I have to install/run the InterComLayer? === === What tools can I use to monitor the DIM framework? === == FeeServer related questions == === What is a FeeServer? === === What is the ControlEngine? === == rcu shell related questions == The sections will be filled as the questions come in a1ad31f24db382789dbd8727d47f11434f16a6ea RCU ControlEngine 0 58 135 2009-02-20T10:44:58Z Dfe002 7 New page: [[Category:DCS]] back to:[[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] :: [[FeeServer]] This page describes the ControlEngine for the TPC Re... wikitext text/x-wiki [[Category:DCS]] back to:[[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] :: [[FeeServer]] This page describes the ControlEngine for the TPC Readout Control Unit. The RCU is also used for the PHOS detector. Later there will be dedicated pages for each detector as well which will contain the specialities. __TOC__ == Building a FeeServer == Please refer to the [[FeeServer#Compilation | FeeServer page]] for help on building a FeeServer. == Command Handling: the Issue method == The CE API provides the method 'issue' to receive commands from a DIM client. The function gets a block of data, where the first 4 bytes represent a [[RCU_ControlEngine#Command header format | 32 bit header]] specifying the type of the command. Each command has to be terminated by a [[RCU_ControlEngine#Command tailer | 32 bit tailer]], containing an and marker and the version no of the command definition. '''Note:'''The architecture of the ARM linux is ''little endian'', which means the least significant byte comes first. === Command header format === The general structure of the header word is: * Bit 32 - 28 | 27 - 24 | 23 - 16 | 15 -0 * 1 1 1 1 cmd id sub id parameter * ^------- 16 bit user parameter passed to the handler function * ^----------------- 8 bit command sub id passed to the handler function * ^-------------------------- 4 bit command id switches to the handler function * ^------------------------------------- 4 bit code for FeeServer command A FeeServer command always starts with 0xf in Bit 27 to 32. Everything else is interpreted as encoded in the [[RCU_ControlEngine#The Message Buffer Format | Message Buffer Format]]. Bit 24 to 27 represent the command id. The sub id and the parameter are specific for each command group. So far the following command groups exist: * <b>0x1</b>: Control Engine Commands * <b>0x2</b>: Msg Buffer Interface Commands * <b>0x3</b>: RCU access commands * <b>0x4</b>: Command set for the RCU configuration * <b>0x5</b>: Setting of values to data point in the Front-end electronics * <b>0x6</b>: Data readout * <b>0x7</b>: Shell command execution * <b>0xa</b>: TPC commands * <b>0xb</b>: PHOS commands The global command scanning is handled by the function /******************************************************************************************* * global switch to the corresponding handlers */ int translateCommand(char* buffer, int size) The function is a switch to the specific handler functions, it extracts command id and the parameter from the header. The treatment of the parameter is up to the specific command. === The Message Buffer Format === The ''Message Buffer Interface'' is a memory mapped interface for the communication between DCSboard and RCU. The FeeServer treats all command blocks with Bits 28 to 31 of the Header word different from 0xf as encoded in the ''Message Buffer'' format and transferes them directly to the interface. [[DCS_board_tools#Message_Buffer_access_.28RCU_interface.29 | Message Buffer Interface specifications]] === Control Engine commands === /******************************************************************************************* * the commands concerning and explicitly handled by the CE */ int translateCeCommand(__u32 cmd, __u32 parameter, const char* pData, int iDataSize) The following ids are defined in rcu_issue.h FEESERVER_CE_CMD (0x01000000 | FEESERVER_CMD) {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Command Name ! style="background:#ffdead;" | Command Code ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Parameter ! style="background:#ffdead;" | # words in data buffer |- | CEDBG_SET_BUF_PRINT_SIZE | 0xf1010000 | set the maximum size for the command buffer debug print, default 0 | the maximum number of bytes for printout | 0 |- | CEDBG_USE_SINGLE_WRITE | 0xf1020000 | use single write/read for rcu memory writing | 0 = off, 1 = on | 0 |- | CEDBG_EN_SERVICE_UPDATE | 0xf1030000 | turn on/off the update of the services | 0 = off, 1 = on | |- | CEDBG_SET_SERVICE_DATA | 0xf1040000 | set the data of a service | bit 0-7 service no; bit 8-12 FEC no; bit 13=1 rcu register (FEC no not valid); parameter: 0x0 off, 0xffff all on, 0x<bitfield> selection on | 0 |- | CE_READ_DEFAULT_SERVICES | 0xf1050000 | returns a list of all possible services | | 0 |- | CE_READ_VALID_FECS | 0xf1060000 | returns a list of the valid Frontend cards | | 0 |- | CE_RELAX_CMD_VERS_CHECK | 0xf1070000 | relax the version checking for commands | 0 = off, 1 = on | 0 |} === Message Buffer Interface commands === /******************************************************************************************* * the commands concerning the message buffer access library */ int translateDcscCommand(__u32 cmd, __u32 parameter, const char* pData, int iDataSize) { The following ids are defined in rcu_issue.h FEESVR_DCSC_CMD (0x02000000 | FEESERVER_CMD) {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Command Name ! style="background:#ffdead;" | Command Code ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Parameter ! style="background:#ffdead;" | # words in data buffer |- | DCSC_SET_OPTION_FLAG | 0xf210000 | set a debug option flag of the dcscRCUaccess library | bitpattern, each bit=1 corresponds to an option flag to be set | 0 |- | DCSC_CLEAR_OPTION_FLAG | 0xf220000 | clear a debug option flag of the dcscRCUaccess library | bitpattern, each bit=1 corresponds to an option flag to be cleared | 0 |} === RCU commands === Per default the RCU functionality is enabled. It can be disabled by the <b>--enable-rcu=no</b> option during package configuration. int translateRcuCommand(__u32 cmd, __u32 parameter, const char* pData, int iDataSize) { The following ids are defined in rcu_issue.h FEESVR_CMD_RCU (0x03000000 | FEESERVER_CMD) {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Command Name ! style="background:#ffdead;" | Command Code ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Parameter ! style="background:#ffdead;" | Payload |- | RCU_EXEC | 0xf3010000 | send the execution command to run the sequence written to rcu instruction memory | ignored | 0 |- | RCU_STOP_EXEC | 0xf3020000 | stop the execution | ignored | 0 |- | RCU_WRITE_INSTRUCTION | 0xf3030000 | write to rcu instruction memory | number of 32 bit words | 32 bit data, count specified by parameter |- | RCU_EXEC_INSTRUCTION | 0xf3040000 | write to rcu instruction memory and send the execution command | number of 32 bit words | 32 bit data, count specified by parameter |- | RCU_WRITE_PATTERN8 | 0xf3050000 | write 8 bit data to rcu pattern memory | number of 8 bit words | (parameter + 3)/4 (data block has to be aligned to 4) |- | RCU_WRITE_PATTERN16 | 0xf3060000 | write 16 bit data to rcu pattern memory | number of 16 bit words | (parameter + 1)/2 (data block has to be aligned to 4) |- | RCU_WRITE_PATTERN32 | 0xf3070000 | write 32 bit data to rcu pattern memory | number of 32 bit words | 32 bit data, count specified by parameter |- | RCU_WRITE_PATTERN10 | 0xf3080000 | write 10 bit compressed data to rcu pattern memory, each 32-bit word of the data block contains 3 10-bit words | number of 10 bit words | (parameter + 2)/3 (data block has to be aligned to 4) |- | RCU_READ_INSTRUCTION | 0xf3090000 | read from rcu instruction memory | number of 32-bit words to read | 0 |- | RCU_READ_PATTERN | 0xf30a0000 | read from rcu pattern memory | number of 32-bit words to read | 0 |- | RCU_READ_MEMORY | 0xf30b0000 | read from rcu memory location | address in the RCU memory space | 0 |- | RCU_WRITE_MEMORY | 0xf30c0000 | write to rcu memory location | address in the RCU memory space | one 32 bit word |- | RCU_WRITE_RESULT | 0xf30d0000 | write to rcu result memory | number of 32-bit words to write | 32 bit data, count specified by parameter |- | RCU_READ_RESULT | 0xf30e0000 | read from rcu result memory | number of 32-bit words to read | 0 |- | RCU_WRITE_MEMBLOCK | 0xf3100000 | write to rcu memory - the first word specifies the address, data words are following | number of 32-bit words to write | one 32 bit address followd by 32 bit data, count specified by parameter |- | RCU_READ_MEMBLOCK | 0xf3110000 | read from rcu memory - the word in the data block is treated as address in RCU memory space | number of 32-bit words to read | one 32 bit address |} === Command set for the RCU configuration === This command set is intended to steer the firmware update and configuration for the RCU. So far not implemented. FEESVR_CMD_RCUCONF (0x04000000 | FEESERVER_CMD) {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Command Name ! style="background:#ffdead;" | Command Code ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Parameter ! style="background:#ffdead;" | # words in data buffer |- | RCU_WRITE_FPGA_CONF | 0xf4010000 | write a configuration to the RCU FPGA | | 0 |- | RCU_READ_FPGA_CONF | 0xf4020000 | read the configuration of the RCU FPGA | | 0 |- | RCU_WRITE_FLASH | 0xf4030000 | write a file to the Flash | | 0 |- | RCU_READ_FLASH | 0xf4040000 | write a file to the Flash | | 0 |} === Setting of data points of the Front-end electronics === Set the data for a corresponding service, the handler function has to be specified during the registration of the service. The payload is expected to be a 8, 16, or 32 bit value followed by the name of the corresponding service. The length of the string is specified as parameter in the lower 16 bit of the command header. Currently, the command block must be aligned to 4, add some NULL bytes to the name string to comply with that rule. FEESVR_SET_FERO_DATA (0x05000000 | FEESERVER_CMD) {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Command Name ! style="background:#ffdead;" | Command Code ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Parameter ! style="background:#ffdead;" | # words in data buffer |- | FEESVR_SET_FERO_DATA8 | 0xf5010000 | set 8 bit value to data point | length of zero terminated service name | (1+parameter + 3)/4 |- | FEESVR_SET_FERO_DATA16 | 0xf5020000 | set 16 bit value to data point | length of zero terminated service name | (2+parameter + 3)/4 |- | FEESVR_SET_FERO_DATA32 | 0xf5030000 | set 16 bit value to data point | length of zero terminated service name | (4+parameter + 3)/4 |- | FEESVR_SET_FERO_DFLOAT | 0xf5040000 | set float value to data point | length of zero terminated service name | (8+parameter + 3)/4 |} === Data readout from the rcu data buffer === This provides a low rate access to the events in the RC data buffer. FEESVR_CMD_DATA_RO (0x06000000 | FEESERVER_CMD) === shell command execution === This group of commands allows the execution of shell commands on the DCS board. The parameter, the lower 16 bit, gives the size of that command buffer in BYTE FEESVR_CMD_SHELL (0x07000000 | FEESERVER_CMD) {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Command Name ! style="background:#ffdead;" | Command Code ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Parameter ! style="background:#ffdead;" | # words in data buffer |- | FEESRV_EXECUTE_PGM | 0xf7010000 | execute a script/program on the DSC board | | the remaining data is interpreted as a char string containing shell command and arguments |- | FEESRV_EXECUTE_SCRIPT | 0xf7020000 | send a script down ans execute it | | the remaining data is interpreted as a char buffer containing the script |- | FEESRV_BINARY_PGM | 0xf7030000 | send a binary program to the DCS board and execute it | | the remaining data is interpreted as a char buffer which contains the binary program |- | FEESRV_RCUSH_SCRIPT | 0xf7040000 | send a script down and execute it with rcu-sh | | the remaining data is interpreted as a char buffer which contains the script |} === TPC commands === So far there are no specific commands for the TPC electronics. Everything is covered by the RCU functionality. A function call is forseen. The support has to be enabled by the <b>configure</b> option <b>- -enable-tpc</b>. Internally this is translated to the define <b>TPC</b>. All code has to be encapsulated by #ifdef TPC ... #endif Files: ce_tpc.c, ce_tpc.h int translateTpcCommand(__u32 cmd, __u32 parameter, const char* pData, int iDataSize) { === PHOS commands === The support has to be enabled by the <b>configure</b> option <b>- -enable-phos</b>. Internally this is translated to the define <b>PHOS</b>. All code has to be encapsulated by #ifdef PHOS ... #endif Files: ce_phos.c, ce_phos.h <br> Specific commands for the PHOS detector are handled by the function: int translatePhosCommand(__u32 cmd, __u32 parameter, const char* pData, int iDataSize) { === Command tailer === The upper two byte contain a 16 bit end marker (0xdd33) and the lower two byte a version number. #define CE_CMD_EM_MASK 0xffff0000 #define CE_CMD_VS_MASK 0x0000ffff #define CE_CMD_VERSION 0x0001 #define CE_CMD_ENDMARKER 0xdd330000 #define CE_CMD_TAILER (CE_CMD_ENDMARKER | CE_CMD_VERSION) == Services == The default configuration of the RCU ControlEngine contains both services which publish data points of the FEC's and services for data points of the RCU, e.g. the '''A'''ctive '''F'''ront-end card '''L'''ist. All services are published at startup. The configuration of FEC's is determined by the '''FEESERVER_FEC_MONITOR''' environment variable. The variable must be set appropriate to publish any data from FEC's. It contains a string of ''0'' and ''1'' describing subsequently the status of FEC's starting from no 1. Missing digits at the end are treated as 0. E.g. the following configuration enables the control of FEC #2 and #5 export FEESERVER_FEC_MONITOR=01001 Services without a link to the data point are set to -2000. This happens if a Front-end card is included into the CE but not active. Service channels have always the type ''float''. Even bitfields or hexadecimal numbers are sent as that type. === RCU data points === The complete list is still going to be defined. {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Default configuration ! style="background:#ffdead;" | Name ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Deadband ! style="background:#ffdead;" | Bitwidth ! style="background:#ffdead;" | Type ! style="background:#ffdead;" | Implemented |- align="center" | on || RCU_AFL || active Front-end card list || 0.5 || 32 || hex || -- |- align="center" | on || RCU_ERRST || status and error || 0.5 || 32 || hex || -- |- align="center" | on || RCU_TRCFG || trigger configuration and status || 0.5 || 32 || hex || -- |- align="center" | on || RCU_CNT || trigger count || 0.5 || 32 || hex || -- |- align="center" | on || RCU_RDO || Read-out list || 0.5 || 32 || hex || -- |} === FEC data points === The following table shows the services which are published by default for one Front-end card. Each data point is identified by a unique name and can provide two functionalities: * publishing of data point via a DIM service channel, for that purpose an ''update'' method has to be implemented which can access the hardware. * set data point via the Command '''FEESVR_SET_FERO_DATA''', the ''set'' method has to be implemented to access the hardware. The environment variable FEESERVER_SRV_ENABLE is forseen to override the standard selection of service channels. The default configuration is given in the table. The variable can contain a comma separated list of service names. {| border="1" cellpadding="5" cellspacing="0" align="center" |- ! style="background:#efefef;" | Default configuration ! style="background:#ffdead;" | Name ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Deadband ! style="background:#ffdead;" | Bitwidth ! style="background:#ffdead;" | Conversion factor ! style="background:#ffdead;" | Unit ! style="background:#ffdead;" | Implemented |- align="center" | on || T_TH || temperature threshold || 0.5 || 10 || 0.25 || oC || v0.2 |- align="center" | on || AC_TH || analog current threshold || 0.5 || 10 || 0.017 || A || v0.2 |- align="center" | on || AV_TH || analog voltage threshold || 0.5 || 10 || 0.0043 || V || v0.2 |- align="center" | on || DV_TH || digital voltage threshold || 0.5 || 10 || 0.0043 || V || v0.2 |- align="center" | on || DC_TH || digital current threshold || 0.5 || 10 || 0.03 || A || v0.2 |- align="center" | on || TEMP || temperature || 0.5 || 10 || 0.25 || oC || v0.2 |- align="center" | on || AV || analog voltage || 0.5 || 10 || 0.0043 || V || v0.2 |- align="center" | on || AC || analog current || 0.5 || 10 || 0.017 || A || v0.2 |- align="center" | on || DV || digital voltage || 0.5 || 10 || 0.0043 || V || v0.2 |- align="center" | on || DC || digital current || 0.5 || 10 || 0.03 || A || v0.2 |- align="center" | off || L1CNT || level 1 trigger count || 0.5 || 16 || 1.0 || || v0.2 |- align="center" | off || L2CNT || level 2 trigger count || 0.5 || 16 || 1.0 || || v0.2 |- align="center" | off || SCLKCNT || || 0.5 || 16 || 1.0 || || v0.2 |- align="center" | off || DSTBCNT || || 0.5 || 8 || 1.0 || || v0.2 |- align="center" | off || TSMWORD || || 0.5 || 9 || 1.0 || || v0.2 |- align="center" | off || USRATIO || || 0.5 || 16 || 1.0 || || v0.2 |- align="center" | off || CSR0 || BC control & status register 0 || 0.5 || 11 || 1.0 || || v0.2 |- align="center" | off || CSR1 || BC control & status register 1 || 0.5 || 14 || 1.0 || || v0.2 |- align="center" | off || CSR2 || BC control & status register 2 || 0.5 || 16 || 1.0 || || v0.2 |- align="center" | off || CSR3 || BC control & status register 3 || 0.5 || 16 || 1.0 || || v0.2 |} == States == The CE exports the following state channels: * one channel CE state: '''CE_STATE''' * one channel RCU state: '''RCU_STATE''' * one channel for each valid FEC: '''FECxx_STATE''' === States of the RCU === {| border="1" cellpadding="5" cellspacing="0" |- ! style="background:#ffdead;" | Name ! style="background:#ffdead;" | Code ! style="background:#ffdead;" | Description |- | RCU_OFF || align="right" | 1 | RCU is off |- | RCU_START || align="right" | 2 | RCU has been switched on |- | RCU_RAMP_DOWN || align="right" | 3 | ramping down |- | RCU_CONF-WAITING || align="right" | 10 | the RCU could not configure automatically after power on and there is no configuration file on the DCS board avaiable -> waiting for configuration |- | RCU_CONFIGURING || align="right" | 11 | the configuration is in progress |- | RCU_CONFIGURED || align="right" | 12 | RCU is configured, after the RCU_CONFIGURING state the CE switches to state RCU_CONFIGURED and tries to connect to the RCU |- | RCU_NOT_ACCESSIBLE || align="right" | 20 | configuration was finished but access could not be established |- | RCU_RUNNING || align="right" | 100 | RCU is running |- | RCU_CORRUPTED || align="right" | 200 | RCU corrupted; this state can have several reasons: the CE encounters some strange behaviour of the RCU and checks the configuration; the configuration watchdog encounters a configuration missmatch, the scrubbing process on the RCU encounters a non repairable malfunction |} Note: The states are currently under discussion === States of FEC's === {| border="1" cellpadding="5" cellspacing="0" |- ! style="background:#ffdead;" | Name ! style="background:#ffdead;" | Code ! style="background:#ffdead;" | Description |- | FEC_UNDEFINED || align="right" | 1 | FEC is invalid |- | FEC_OFF || align="right" | 2 | FEC is off |- | FEC_START || align="right" | 3 | FEC has been switched on |- | FEC_RAMP_DOWN || align="right" | 4 | ramping down |- | FEC_CONF-WAITING || align="right" | 10 | waiting for configuration |- | FEC_CONFIGURING || align="right" | 11 | configuration in progress |- | FEC_CONFIGURED || align="right" | 12 | FEC is configured |- | FEC_NOT_ACCESSIBLE || align="right" | 20 | not accessable |- | FEC_RUNNING || align="right" | 100 | FEC is running |- | FEC_CORRUPTED || align="right" | 200 | FEC corrupted |- | FEC_FAIL || align="right" | 201 | FEC failure reported from MSM |- | FEC_FATAL || align="right" | 202 | FEC fatal failure reported from MSM |} Note: The states are currently under discussion == [[The Actel software device in the FeeServer CE]] == The Actel softwaredevice has the task to control and monitor the operation of the Actel FPGA on the RCU. For more information visit the [[The Actel software device in the FeeServer CE]] page. == [[DCS Download]] == f8d36cd0d2d490cf274702bb57c65a97b70380da DCS board tools 0 59 136 2009-02-20T10:45:26Z Dfe002 7 New page: [[Category:DCS]] [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] == Overview == This sections covers the DCS board software for the TPC-like de... wikitext text/x-wiki [[Category:DCS]] [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] == Overview == This sections covers the DCS board software for the TPC-like detectors (so far TPC, PHOS, most likely FMD and EMCAL). Apart from the mentioned FeeServer there are some low level tools and interfaces. In fact, the FeeServer uses them. [[Image:DCSboard software components.png|thumb|none|600px|DCS board Software Components]] The DCS board communicates via two interfaces to the RCU board: # The Message Buffer Interface: used for most of the data tranfer between software and memory on the RCU # The Direct Bus Access: programming of RCU Flash Memory and FPGA Configuration Memory A driver (rcubus_driver) provides the access to the interfaces via the following devices. A C-interface (RCU interface) implements basic functionality for the Message Buffer Interface. It is used by both the RCU shell (low level tool) and the FeeServer == Access to the RCU == The figure illustrates the the available hardware interfaces: Message Buffer Interface and Direct Bus Access. [[Image:DCSboard-RCU interface.png|frame|none|Hardware interfaces between DCS board and RCU]] The data flow is controlled by lines in the Control Register: * Bit 7 Start Command * Bit 6 MIB multiplexer, read enable * Bit 0 Ready * Bit 5 Direct mode select The idea behind the Message Buffer Interface: * the interface moves some of the complexity to the firmware * decouples cpu from the communication task * block by block transfer * 2 Buffers for communication and one Control Register ** Message Input Buffer (MIB) ** Message Result Buffer (MRB) ** Control Register * basic sequence from software view ** write command sequence to MIB ** set 'execute' flag ** wait for the 'ready' flag ** read result and status In Direct Bus Access mode the driver (or a specific subdriver) takes control over the bus lines. == RCU bus driver == The following devices are available resp. are planned to be that: */dev/rcu/msgbuf message buffer interface */dev/rcu/fpga fpga configuration (under development) */dev/rcu/flash general flash memory access (under development) */dev/rcu/flash0 flash memory bank 0 (under development) */dev/rcu/flash1 flash memory bank 1 (under development) */dev/rcu/flash2 flash memory bank 2 (under development) */dev/rcu/flash3 flash memory bank 3 (under development) == Message Buffer access (RCU interface) == The Message Buffer interface is a memory mapped interface. A certain command sequence has to be written to the Message Input Buffer (MIB). A command sequence constists of a 32-bit '''header word''', the command words and a 32-bit '''marker word''' which terminates one ''sequence block''. Several ''sequence blocks'' can be grouped and are finally terminated by the '''End marker word'''. The structure is outlined in the following figure. [[Image:MsgBufferFormat.png|frame|none|Format of the Message Buffer input]] === Command ids === * Bit 5-0 of the header word {| border="1" cellpadding="5" cellspacing="0" |- ! style="background:#ffdead;" | Command Name ! style="background:#ffdead;" | Command Code ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Command words ! style="background:#ffdead;" | # command words |- | align="center" valign="top" | SINGLE_READ | valign="top" | 0x1 | valign="top" | a single read operation | align="center" | {| border="1" style="width:100px" |address |} | valign="top" | 1 |- | align="center" valign="top" | SINGLE_WRITE | valign="top" | 0x2 | valign="top" | a single write operation | align="center" | {| border="1" style="width:100px" |address |- |data |} | valign="top" | 2 |- | align="center" valign="top" | MULTI_READ | valign="top" | 0x3 | valign="top" | block read operation <br> The ''count'' parameter indicates the number of words of a certain format <br>(see [[DCS_board_tools#Control_bits_and_block_number | control bits]]) | align="center" | {| border="1" style="width:100px" |address |- |count |} | valign="top" | 2 |- | align="center" valign="top" | MULT_WRITE | valign="top" | 0x4 | valign="top" | block write operation <br> The ''count'' parameter indicates the number of words of a certain format <br>(see [[DCS_board_tools#Control_bits_and_block_number | control bits]]) | align="center" | {| border="1" style="width:100px" |address |- |count |- |data #1 |- | ... |- |data #n |} | valign="top" | 2 + # data words |- | align="center" valign="top" | RANDOM_READ | valign="top" | 0x5 | valign="top" | random read operation | align="center" | {| border="1" style="width:100px" |address #1 |- |address #2 |- | ... |- |address #n |} | valign="top" | number of addresses |- | align="center" valign="top" | RANDOM_WRITE | valign="top" | 0x6 | valign="top" | random write operation | align="center" | {| border="1" style="width:100px" |address #1 |- |data #1 |- |address #2 |- |data #2 |- | ... |- |address #n |- |data #n |} | valign="top" | 2 x number of addresses |- | align="center" valign="top" | FLASH_ERASEALL | valign="top" | 0x21 | valign="top" | erase the flash completely | align="center" | {| border="1" style="width:100px" |} | valign="top" | 0 |- | align="center" valign="top" | FLASH_ERASE_SEC | valign="top" | 0x22 | valign="top" | erase one sector of the flash | align="center" | {| border="1" style="width:100px" |address |} | valign="top" | 1 |- | align="center" valign="top" | FLASH_MULTI_ERASE | valign="top" | 0x24 | valign="top" | erase multiple sectors of the flash | align="center" | {| border="1" style="width:100px" |address |- |count |} | valign="top" | 2 |- | align="center" valign="top" | FLASH_READID | valign="top" | 0x28 | valign="top" | read the ID of the flash <br> 0 = Manufacturer ID / 1 = Device ID | align="center" | {| border="1" style="width:100px" |'0' or '1' |} | valign="top" | 1 |- | align="center" valign="top" | FLASH_RESET | valign="top" | 0x30 | valign="top" | reset the flash | align="center" | {| border="1" style="width:100px" |} | valign="top" | 0 |} === Word count === * Bit 15-6 of the header word <br> must contain the number of words between the '''Header''' end the '''Marker'''. === Block number === * Bit 23-16 of the header word <br> number of the current ''sequence block'' <br> The first block has number '''n-1''', the block number is decremented for the following blocks. The last block has block no '''0'''. If there is only one ''sequence block'', the block no bits are just zero. === Control bits and block number === * Bits 25-24 Data Format {| border="1" cellpadding="5" cellspacing="0" |- ! style="background:#ffdead;" | 25 - 25 ! style="background:#ffdead;" | Description ! style="background:#ffdead;" | Data Format |- | align="center" valign="top" | 0 0 | valign="top" | no compression | align="center" | {| border="1" style="width:400px" | style="border:0px" align="left" | 31 | style="border:0px" align="right" | 0 |- | colspan=2 align="center" | address |} |- | align="center" valign="top" | 0 1 | valign="top" | 2 x 16 bit words | align="center" | {| border="1" style="width:400px" | style="border:0px" align="left" | 31 | style="border:0px" align="right" | 16 | style="border:0px" align="left" | 15 | style="border:0px" align="right" | 0 |- | colspan=2 align="center" | address + 1 | colspan=2 align="center" | address |} |- | align="center" valign="top" | 1 0 | valign="top" | 3 x 10 bit words | align="center" | {| border="1" style="width:400px" | style="border:0px" align="left" | 29 | style="border:0px" align="right" | 20 | style="border:0px" align="left" | 19 | style="border:0px" align="right" | 10 | style="border:0px" align="left" | 9 | style="border:0px" align="right" | 0 |- | colspan=2 align="center" | address + 2 | colspan=2 align="center" | address + 1 | colspan=2 align="center" | address |} |- | align="center" valign="top" | 1 1 | valign="top" | 4 x 8 bit words | align="center" | {| border="1" style="width:400px" | style="border:0px" align="left" | 31 | style="border:0px" align="right" | 24 | style="border:0px" align="left" | 23 | style="border:0px" align="right" | 16 | style="border:0px" align="left" | 15 | style="border:0px" align="right" | 8 | style="border:0px" align="left" | 7 | style="border:0px" align="right" | 0 |- | colspan=2 align="center" | address + 3 | colspan=2 align="center" | address + 2 | colspan=2 align="center" | address + 1 | colspan=2 align="center" | address |} |} === Version === * Bit 31 - 28 of header word <br> version of Message Buffer specification {| border="1" cellpadding="5" cellspacing="0" |- ! style="background:#ffdead;" | 31 - 28 ! style="background:#ffdead;" | |- | align="center" valign="top" | 0 x x x | version 1 (bit 31==0, other bits arbitrary) |- | align="center" valign="top" | 1 0 1 0 | version 2 |- | align="center" valign="top" | 1 0 1 1 | version 2.2 |- | align="center" valign="top" | 1 1 1 1 | FeeServer command (used outside the message buffer interface) |} === Result Format === {| border="1" cellpadding="5" cellspacing="0" |- ! style="background:#ffdead;" | Word # ! style="background:#ffdead;" | Description |- | align="center" valign="top" | 1 | align="center" | {| border="1" style="width:400px" | style="border:0px" align="left" | 31 | style="border:0px" align="right" | 16 | style="border:0px" align="left" | 15 | style="border:0px" align="right" | 0 |- | colspan=2 align="center" | | colspan=2 align="center" | Number of words |- | style="border:0px" colspan=4 align="center" valign="top" | Information Word |} |- | align="center" valign="top" | 2 | align="center" | {| border="1" style="width:400px" | style="border:0px" align="left" | 31 | style="border:0px" align="right" | 0 |- | colspan=2 align="center" | Status word |} |- | align="center" valign="top" | 3 - n | align="center" | {| border="1" style="width:400px" | style="border:0px" align="left" | 31 | style="border:0px" align="right" | 0 |- | colspan=2 align="center" | Data |} |} <pre> Status word: 0 - if no error Bit 15 set if any error Bit 0: missing marker Bit 1: missing end marker Bit 2: no target answer (something wrong with the RCU or not connected) Bit 3: no bus grant (no access to the bus on dcs board) Bit 5: old message buffer format (prior to v2 with rcu-sh version v1.0) </pre> === Examples === ==== Single read ==== from address 0x7000 {| border="1" cellpadding="5" cellspacing="0" | 0xA0000041 || Information word |- | 0x00007000 || address 0x7000 |- | 0xAA550000 || Block marker without Checksum |- | 0xDD330000 || End marker |} ==== Multiple write ==== 4 words starting at address 0x6800 {| border="1" cellpadding="5" cellspacing="0" |- | 0xA0000184 || Information word |- | 0x00006800 || address 0x6800 |- | 0x00000004 || 4 words to write |- | 0x0000AFFE || data word 1 |- | 0x0000D00F || data word 2 |- | 0x00001234 || data word 3 |- | 0x00005678 || data word 4 |- | 0xAA550000 || Block marker without Checksum |- | 0xDD330000 || End marker |} ==== Multiple write with 3x10 bit compress ==== 3x3 10bit words starting at address 0x7000 and finishing at 0x7008 {| border="1" cellpadding="5" cellspacing="0" |- | 0xA2000144 || Information word |- | 0x00007000 || address 0x6800 |- | 0x00000003 || 4 words to write |- | 0x2A995566 || data word 1 |- | 0x1EADBEEF || data word 2 |- | 0x01020202 || data word 3 |- | 0xAA550000 || Block marker without Checksum |- | 0xDD330000 || End marker |} ==== Flash Erase all ==== Erasing the complete content on the RCU Flash Memory {| border="1" cellpadding="5" cellspacing="0" |- | 0xA4000021 || Information word |- | 0xAA550000 || Block marker without Checksum |- | 0xDD330000 || End marker |} ==== Flash Erase Multiple Sectors ==== Erasing multiple subsequent sectors on the RCU Flash Memory {| border="1" cellpadding="5" cellspacing="0" |- | 0xA40000E4 || Information word |- | 0x003E8000 || Address of first sector (Word Address) |- | 0x00000004 || Number of sectors to Erase |- | 0xAA550000 || Block marker without Checksum |- | 0xDD330000 || End marker |} == RCU shell == The RCU Shell is a small command-line software for communcating with the firmware on the RCU motherboard. It is started by simply typing 'rcu-sh' at the command-line. This will bring you to the shell mode, where different types of commands can be executed.<br> The RCU motherboard can be operated in three different modes. # Memory mapped mode # Selectmap mode # Flash mode The default mode is memorymapped mode, which gives you direct memory access of the registers in the FPGAs on the RCU motherboard. <br> Flash mode gives the dcs board direct control of the flash memory on the RCU motherboard, while selectmap mode gives the dcs board direct control over the selectmap interface of the Xilinx Virtex-II on the RCU motherboard. === Memory mapped mode === === Selectmap mode === The Selectmap mode is enabled by typing: enter operation (h/i/q/r/w): selectmap enable or enter operation (h/i/q/r/w): sm e The following options is available: 1. Get help on commands: sm help 2. write to single address via the selectmap interface: sm w 0x[address] 0x[data] 3. read from single address via the selectmap interface: sm r 0x[address] 4. Abort ongoing operation on the Xilinx FPGA: sm abort === Flash mode === The flash mode is enabled by typing:<br> enter operation (h/i/q/r/w): flash enable The following options is available: <br> 1. Get help on commands: flash help 2. Write to single address in flash: flash write 0x[address] 0x[data] [num] num = number of sequental addresses to write the given data to 3. Write a file from a start address in the flash: flash write [-s] 0x[address] file [size] -s = byteswap enabled size = number of 16 bit words to write to the flash from beginning of file. 4. Erase complete flash: flash erase all 5. Erase sector: flash erase sec 0x[sector address] 6. Read single address from flash: flash read 0x[address] [num] num = number of sequental address to read from the given address. 7 Verify content of the flash memory: flash verify 0x[address] file Verifies that the content of the flash from the given address matches the content of the given file. == Connection to FeeServer == [[Image:DCSboard TPC-ControlEngine connection.png|frame|none|Connection of the FeeServer Control Engine (TPC version) to the Hardware interfaces]] 806e4363b7901bc55d7222e4a9147a60b03aa5dd FeeServer 0 60 137 2009-02-20T10:46:12Z Dfe002 7 New page: [[Category:DCS]] back to:[[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] == Overview == ... (to be filled) == FeeServer Download == Curren... wikitext text/x-wiki [[Category:DCS]] back to:[[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] == Overview == ... (to be filled) == FeeServer Download == Current releases of the FeeServer with RCU-like ControlEngine (fits for '''TPC''' and '''PHOS''') are available from the [[DCS Download#FeeServer | Download page]]. Versions of the FeeServer core software can be downloaded from the [https://www.ztt.fh-worms.de/download/alice ZTT web pages]. This package only contains the FeeSever core, the needed [http://www.cern.ch/dim DIM framework] libraries and a dummy CE (something like a echo server), the real CE depends on the detector and requires the appropriated hardware). == Compilation == After unpacking the compressed archive (tar xzvf <filename> ) change to the directory. The package must be configured by running the ''./configure'' script, after configuration for the desired platform type ''make''. The script has several options: * '''--host <host environment>''' : selection of the cross compiler * '''--disable-rcu''' : RCU related functionality (in this wiki you will only find RCU-like FeeServers, so there is only the option to turn it off) * '''--enable-tpc''' : TPC related functionality (so far there is none, all is included in the RCU target) * '''--enable-phos''' : PHOS related functionality * '''--enable-mastermode''': Enable special features (e.g. shell command execution, FeeServer update) * '''--enable-rcudummy''' : Enable a dummy implementation of the RCU CE. This will skip all the hardware accesses. Try '''--help''' to get a comprehensive help or '''--help=short''' to get information on the package specific options. If you want to build the FeeServer for the armlinux on the DCS board you need a [[DCS FAQ#What is a cross compiler? | Cross Compiler]]. Currently arm-uclibc-gcc 3.3.1 is used. To configure the package for the cross compiler run the configure script like: ./configure --host arm make Be sure that the path of the cross compiler is added to the '''PATH''' environment variable ([[DCS FAQ#How do I install a cross compiler and use it? |more help]]). If you plan to compile the FeeServer core package please have a look into the README file which comes along with the package. == Preparation == To run the FeeServer on the DCS board copy it to the board wherever you want to have it. The second, strongly recommended, possibility is to mount a network disk on the board. The FeeServer package supports automatic copying to whatever folder through the standard ''make install'' command. The location can be specified by the '''--prefix''' option to the ''configure'' script. A few more variables have to be set: * '''DIM_DNS_NODE'''(mandatory) denotes the host where a ''Name Server'' for the DIM framework (''dns - DIM Name Server'') is running. * '''FEE_SERVER_NAME'''(mandatory) for the name of the FeeServer (as it will pop up in the DIM system ) * '''FEE_LOG_LEVEL'''(optional) default logging level of the FeeServer * '''FEESERVER_FEC_MONITOR'''(optional) specifies the valid FECs <br> its a string of '0' and '1', missing entries are set to 0, e.g. '01001' puts FEC 2 and 5 into the configuration '''!!! IMPORTANT !!! NOTE:''' Since version 0.7.0: The environment variable for the FeeServer name has changed to FEE_SERVER_NAME. (prior versions: DIM_SERVER_NAME) == Running the FeeServer == To execute FeeServer properly please follow these steps: * make sure that the dns for DIM is running on the machine you specified * !!! NEW !!! since version 0.7.0:<br> finally run ''sh startFeeServer.sh'' <br> This script starts the FeeServer and takes care of various features. The starting script also accepts an optional parameter: You can also set the FeeServer name by passing it to the starting script. The starting script automatically restarts the FeeServer, if it exits with an unknown error/exit value. For debugging purpose it is convenient to start the FeeServer directly like ''./feeserver''. In that case, the restart and update features will not work. == Important Notes == * for full functionality start the FeeServer only with the startFeeServer.sh script. * interface of FeeServer and CE changed in version 0.7.0 * The service name scheme for CE service has changed:<br>old style: ''servername/servicename'' -> new style: ''servername_servicename''<br> (These changes for ACK-, MSG- and Command-channel will follow.) * never turn on '''mastermode''' unless you are shure that your network is behind a firewall to avoid abuse. See also the README and ChangeLog - files of the FeeServer package. == ControlEngine guidelines == Following some notes, which should be taken account of when developing a ControlEngine. * We included a demo function for initializing an "Item" in our dummy CE. When writing an own CE, it is best copying and using this function in order to get a proper initialized "Item". * Don't use static created "Items", especially don't use static allocated memory for the "Item" names. This would case the clean up to hang and a proper exit would be no longer possible. * Please obey the DCS naming and numbering convention, when naming an "Item". more under: http://alicedcs.web.cern.ch/AliceDCS/ * Provide the "Items" with a default deadband. (Else the deadband will be 0, and the update rate would get to high -> to much traffic). * After the CE has been initialized, let this thread sleep for approx. 2-5 seconds (this gives the FeeServer time start the serving functionality inside the DIM framework). * In "cleanUpCE()", the CE don't need to clean and/or free "Items" and its members. (In fact it must not do it, this would crash the FeeServer during its cleanup.) * Don't call the createLogMessage() function during initializing the CE. (after the above mentioned sleep is fine). This service is only available after the DIM serving functionality has been started. * Be careful with sending log messages, especially in rapidly repeated checks/functions, this can pile up your log file extremely. Even consider carefully the specified log level; MSG_ALARM should be only for events, that could damage or destroy the system/hardware. * If, while testing, certain log messages of the CE don't appear, check the set log levels in FeeServer and InterComLayer. They may have filtered these messages. To set the default log level of the FeeServer, you can also use the environment variable FEE_LOG_LEVEL before starting the FeeServer. == ControlEngine implementations == * [[RCU ControlEngine | The ControlEngine for the RCU]] fe0954ba551015d763bb428913b7c6be74284804 InterComLayer installation 0 61 138 2009-02-20T10:47:09Z Dfe002 7 New page: [[Category:DCS]] == Overview == ... (to be filled) == InterComLayer Download == Current versions of the InterComLayer software can be downloaded from the [https://www.ztt.fh-worms.de/do... wikitext text/x-wiki [[Category:DCS]] == Overview == ... (to be filled) == InterComLayer Download == Current versions of the InterComLayer software can be downloaded from the [https://www.ztt.fh-worms.de/download/alice ZTT webpages]. (Note: In order to use the access to an ORACLE DB, the DB client libs are also needed (can be found at the same location). The pthread libs for Windows and the [http://www.cern.ch/dim DIM framework] libs are already included). == Linux version == === Compilation === To compile the InterComLayer please follow these steps: - run ". setup.sh" or "source setup.sh" to prepare your shell (bash) - if you compile InterComLayer for the first time on your system: - run "make -f makefile_dim.linux" to compile the required DIM Library - run "make -f makefile_interCom.linux" to finally compile InterComLayer if you want to clean up your system: - run "make realclean -f makefile_dim.linux" to clean up DIM stuff - run "make clean -f makefile_interCom.linux" to clean up === Preparation === Before you start the InterComLayer you should adapt the Server.txt and Services.txt files to your needs. Server.txt contains the servername of the FeeServer, Services.txt the corresponding services. You have to make sure that the entered service name exactly looks like in DimTree or DID. The Property.txt file is used to change the behavior of the InterComLayer. You can change for example the way he published services or to which services he had to subscribe. The files are located in the linux folder. === Execution === To execute InterComLayer properly please follow these steps: - set DIM_DNS_NODE as environment variable to the dns for DIM - make sure that the dns for DIM is running on the machine you specified - make sure that all configuration files are available: - for servers / dcscards - for services / monitoring values - finally run interComLayer from the linux folder === Important Notes === Make sure that the setup.sh is executed only ONCE per shell! == Windows version == === Required Environment Variables === Set the following enviroment variables: DIM_DNS_NODE: tells on which host the dim name server is running TNS_ADMIN: tells the program where the database is located Path: add the path of the instant client libs (.dll's) to the PATH variable === Execution === - start the dim framework - The required file is contained in the dim directory/bin/dns.exe - you can controll that the dim name server starts via the dimtree tool in the same directory as dns.exe - change to the intercomlayer directory and enter the bin folder - start interComLayer.exe - the file to load Servernames calls Server.txt and for the Services calls Services.txt == Generell Note == See also the Readme - files in the current InterComLayer package. 08bae909eab21d5639392e1b42047a6b54f7c0c1 The Actel software device in the FeeServer CE 0 19 139 2009-02-20T10:49:06Z Dfe002 7 wikitext text/x-wiki for controlling the Active Partial Configuration solution __TOC__ == Overview == As described in [[Electronics for the Time Projection Chamber (TPC)]] the RCU has an Active Partial Reconfiguration (APR) network to reconfigure the Xilinx SRAM based FPGA in case there appear errors due to the radiation environment. This reconfiguration network includes some Flash memory and the Actel Flash based FPGA. The main task of the Actel software device is to monitor and control the operation of the Actel FPGA. For this reason it offers different services, as monitoring different registers that give information about the state of the hardware, to control the main operation modes of the Actel FPGA and to program the Flash memory for the Active Partial Reconfiguration solution to work. The Actel FPGA features three ways to configure the Xilinx Virtex-II Pro FPGA: *Initial Configuration : Configures the Xilinx Virtex-II Pro once during startup or on command from the DCS board. *Scrubbing : Continously overwrites the configuration memory of the Xilinx Virtex-II Pro, wether an error occured or not. *Frame by Frame readback and error correction : The Actel reads back the single configuration frame of the Xilinx Virtex and compares them to the configuration data stored in the Flash memory on the RCU. For this Active Partial Reconfiguration solution to work, the Flash memory has to be programmed with the correct firmware for the Xilinx FPGA. There are two ways on how to program the Flash memory: *The rcuflashprog command line tool *the here described Actel software device Information about the Actel FPGA and the rcuflashprog tool can be found at: [[Electronics for the Time Projection Chamber (TPC)#RCU Auxilliary FPGA Firmware for TPC and PHOS]] == The services == Some information that the Actel firmware provides is published to the upper layers, to monitor the status of the hardware and information about the number of errors due to the radiation environment.The Services provided are: *ACTEL_STATE :The int number representing the state. *ACTEL_STATENAME :The name of the current state, can be OFF | IDLE | SCRUBBING | READBACK | ERROR *ACTEL_FWVERSION :The firmware version of the Actel FPGA *ACTEL_STATUSREG :The status register of the Actel FPGA, Explanation: *ACTEL_ERRORREG :The error register of the Actel FPGA, Explanation: *ACTEL_CYCLECOUNTER :The number of cycles, how often complete Scrubbing or Frame by frame readback cycles were performed over all the Xilinx memory. *ACTEL_FRAMEERRORCOUNT :The number of errors corrected during Frame by frame readback. Expected are about 10-100 Errors for all 216 RCUs during a 4 hour run. == The statemachine == [[Image:actel_sm.jpg|thumb|350px|right|Sketch of the statemachine]] The statemachine for the Actel represents the main operating modes and adds states for error handling. The initial state is ''OFF/idle'' and during the transition to ''ON/configured'' the error and status register are cleared, the Flash is checked for proper configuration. When entering a mode of active partial reconfiguration, the counters are reset. During ''Scrubbing'' the Cyclecounter is updated, during ''Readback Verification'' also the Frameerrorcounter. In case slight errors occur during the operation, the ''Failure'' state is entered, from where an automatic recovery is attempted. In case this fails, or a severe error occurs, the ''Error'' state is entered, from where the Actel software device has to be reset manually. States can be changed using the fee-client lib. For test purpose, the states can be changed using the feeserver-ctrl command line tool, which uses the fee-client lib. Some commands: To enter the ''ON/configured'' state: echo '<fee>CE_TRIGGER_TRANSITION ACTEL switchon</fee>' | feeserver-ctrl --server TPC-FEE_0_13_1 To enter the ''Scrubbing'' state: echo '<fee>CE_TRIGGER_TRANSITION ACTEL GO_Scrubbing</fee>' | feeserver-ctrl --server TPC-FEE_0_13_1 To quit the scrubbing state: echo '<fee>CE_TRIGGER_TRANSITION ACTEL QUIT_Scrubbing</fee>' | feeserver-ctrl --server TPC-FEE_0_13_1 The other transitions:<br> To enter ''Readback Verification'': GO_Readback<br> To quit ''Readback Verification'': QUIT_Readback<br> To recover from the ''Error'' state: GO_Idle<br> To from ''ON/configured'' back to ''OFF/idle'': stop<br> == Programming the Flash == Programming the Flash on the RCU can be done in two ways: Either via the rcuflashprog command line tool from the DCS board console, or via the FeeServer using the feeserver-ctrl command line tool from a remote console. The usage of the rcuflashprog tool is briefly described (further down), and also in the Actel Usermanual. When programming the Flash via the FeeServer, binary command blocks, that hold the necessary data, have to be available. Since the Flash is divided in three parts (Initial Configuration, Scrubbing, Frame by Frame readback), there are three binary command blocks, each dedicated to one part of the Flash memory. The command blocks can then be send to the FeeServer via the fee-client lib. The feeserver-ctrl command line tool uses this lib. Commands can then be send in the following way: cat rcu_iconfflash.bin | feeserver-ctrl --server TPC_FEE_1_12_1 == Operating the Actel from PVSS == PVSS (Prozess Visualisierungs- und Steuerungssystem by ATM) is a commercial controlling software used to control the ALICE detector. Several panels have been developed by Christian Lippmann at Cern to control the APR solution on the RCU. [[Image:ACTEL_panel.png|thumb|500px|center|Actel state panel in PVSS]][[Image:ACTEL_panel2.jpg|thumb|500px|center|FEC panel with Actel controls in PVSS]] As its common in PVSS, a single RCU can be changed in its state by clicking on the according place on the end caps. To change the state of several RCUs, the '''FSM''' button in the top left corner, under the Alice logo can be used. == Upgrading the Flash memory with a new RCU firmware version == For now the feeserver-ctrl command line tool is needed. Later the binary command blocks will be stored in the configuration database and can be selected and send from there. For a full configuration, first the flash has to be erased, and then the three data block send: cat rcu_eraseflash.bin | feeserver-ctrl --server TPC_FEE_1_12_1 cat rcu_iconfflash.bin | feeserver-ctrl --server TPC_FEE_1_12_1 cat rcu_scrubflash.bin | feeserver-ctrl --server TPC_FEE_1_12_1 cat rcu_frameflash.bin | feeserver-ctrl --server TPC_FEE_1_12_1 Make sure to monitor the logfiles to see that everything went well. == Addendum == === How to use the framegen tool === The framegen is used to extract the configuration frames from the Xilinx Virtex-II Pro FPGA. When reading back the raw data, the framegen stores the frames as three versions: :*the raw framefile :*the read framefile (read header and read footer attached) :*the write framefile (write header and write footer attached) For this the header and footer files have to be given as arguments to the framegen, as well as the frameconfig file, which defines the frames to be read back. The syntax is: ''./framegen frames936.txt read_header read_footer write_header write_footer'' === How to use the rcuflashprog tool === The rcuflashprog tool is used to program the Flash memory on the RCU. A [http://web.ift.uib.no/~dominik/files/tools/flashconf_rcu190606bg3 sample config] file for the rcuflashprog tool: #enable erase enable_erase = true #init program file enable_icfile = true path_icfile = /mnt/kjekspc4/fee-net/rcu_fw/rcu_190606bg3/ name_icfile = rcu.bit startaddr_icfile = 8000h #scrubbing file enable_scfile = true path_scfile = /mnt/kjekspc4/fee-net/rcu_fw/rcu_190606bg3/ name_scfile = rcu_apr.bit startaddr_scfile = 60000h #frame file enable_frfiles = true path_frfiles = /mnt/kjekspc4/fee-net/rcu_fw/rcu_190606bg3/ name_readframefile = r_frame$.hex name_rawframefile = frame$.hex name_writeframefile = w_frame$.hex framesfile = frames936.txt startaddr_frfiles = 100000h frame_offset = 2h header_size_read = 1Bh footer_size_read = 0Bh In the ''enable_xxx'' config lines, the specific action can be chosen, wether the flash should be deleted prior to programming (recommended), and which of the flash parts (initial config, scrubbing or frame by frame readback) shoudl be programmed. For the initial config and the scrubbing, only one file each has to be supplied (the rcu.bit/rcu_apr.bit). For the frame section, all the single frames files are needed. The names of the frames have to be supplied in the 'framesfile'. The Xilinx Virtex-II Pro has 936 configurable frames, a file with all the 936 filenames can be downloaded [http://web.ift.uib.no/~dominik/files/tools/frames936.txt here]. A newer version of the rcuflashprog is under development, where the frame files are extracted from the rcu.bit file. === How to use the rcuflash_feessvr tool === The rcuflash_feesvr tool in the FeeServer package generates the binary command blocks that can be send to the FeeServer to program the Flash memory on the RCU. An [http://web.ift.uib.no/~dominik/files/tools/flashconf.conf example config] file for the rcuflash_feeserver tool looks like this: #FeeServer BLOB generator Configfile. #Do not edit unless you know what you are doing! #You have been warned.. #global option to enable BB_FLASH mode enable_bb_flash = true #enable erase enable_erase = true #init program file enable_icfile = true path_icfile = /home/dominik/src/work/FeeServer/build-dummy/tools/rcu_190606bg/ name_icfile = rcu.bit startaddr_icfile = 8000h BB_init_addr = 0h BB_init_info_addr = 3000h init_addr = 3f9000h init_info_addr = 3f9002 rcu_fw_version = 190606b #scrubbing file enable_scfile = true path_scfile = /home/dominik/src/work/FeeServer/build-dummy/tools/rcu_190606bg/ name_scfile = rcu_apr.bit startaddr_scfile = 60000h BB_scrub_addr = 1000h BB_scrub_info_addr = 4000h scrub_addr = 3fa000 scrub_info_addr = 3fa002 #frame file enable_frfiles = true path_frfiles = /home/dominik/src/work/FeeServer/build-dummy/tools/rcu_190606bg/ name_readframefile = r_frame$.hex name_rawframefile = frame$.hex name_writeframefile = w_frame$.hex framesfile = frames936.txt startaddr_frfiles = 100000h stopaddr_frfiles = 0h frame_offset = 2h #frame offset will have 00 appended: 2h -> 200h header_size_read = 1Bh footer_size_read = 0Bh BB_frame_addr = 2000h BB_frame_info_addr = 5000h frame_addr = 3fb000h frame_info_addr = 3fb002h ==== Composition of the Binary command blocks ==== The Binary command blocks contain information for the Actel software device in the FeeServer CE as well as the actual data that has to be programmed to the Flash. ===== Erase command ===== the Erase block only consists of the Header and Tailer, which tells the Actel softwaredevice to erase the Flash memory completely. {| border="1" cellspacing="0" cellpadding="5" align="center" ! Header ! CE_CMD_TAILER |- | 0xf405 0000 | 0xdd33 0000 |- |} ===== Initial Configuration Block ===== The initial configuration block contains the data of the 'rcu.bit' and some information about addresses and pointers in the flash. Furthermore the RCU firmware version is also coded into this command block and written on the Flash. In this way it can be checked which version of the RCU firmware is currently residing in the Flash memory device. This command block has about 560 kBytes in size. {| border="1" cellspacing="0" cellpadding="5" align="center" ! Header ! INIT_ADDR ! INIT_INFO_ADDR ! START_ADDR ! FILESIZE ! RCU_FW_VERSION ! DATA ! CE_CMD_TAILER |- | 0xf406 0000 | 0x0000 0000 | 0x0000 3000 | 0x0000 8000 | 0x0008 8e68 | 0x0190 606b | (rcu.bit) | 0xdd33 0000 |- |} ===== Scrubbing Block ===== The scrubbing command is similar to the initial configuration command block in its structure, the scrubbing command block just uses different addresses and data and omits the rcu firmware version number. This command block has about 340 kBytes in size. {| border="1" cellspacing="0" cellpadding="5" align="center" ! Header ! SCRUB_ADDR ! SCRUB_INFO_ADDR ! START_ADDR ! FILESIZE ! DATA ! CE_CMD_TAILER |- | 0xf407 0000 | 0x0000 1000 | 0x0000 4000 | 0x0006 0000 | 0x0005 37e0 | (rcu_apr.bit) | 0xdd33 0000 |- |} ===== Frame by Frame readback Block ===== The frame by frame readback block is the most complex and also biggest of the command blocks with its 1,33 MBytes. It holds all the necessary information to program the configuration frames of the Xilinx to the Flash. This is addresses, pointers and also 3 dedicated 'frame info registers', for forward compatibility the number of send frames is submitted as a parameter, which should make it easier to adapt the principle to later versions, maybe using the Xilinx Virtex-4, which has a different number of frames, and also a different size for the single frames. {| border="1" cellspacing="0" cellpadding="5" align="center" ! Header ! FRAME_OFFSET ! FRAME_ADDR ! FRAME_INFO_ADDR ! START_ADDR ! STOP_ADDR ! FRAME_INFO_REG1 ! FRAME_INFO_REG2 ! FRAME_INFO_REG3 ! SIZE_READ ! SIZE_WRITE ! Readframe Data ! Writeframe Data ! CE_CMD_TAILER |- | 0xf403 03a8 | 0x0000 0200 | 0x0000 2000 | 0x0000 5000 | 0x0010 0000 | 0x0000 0000 | 0x0000 2751 | 0x0000 d3cb | 0x0000 1b0b | 0x0000 01f8 | 0x0000 0398 | (NOF*Readframes) | (NOF*Writeframes) | 0xdd33 0000 |- |} The Header contains the number of frames (0x3a8 = 936). == Download Section == === The framegen tool:=== You can retrieve the framegen from the CVS, or download a compiled version [http://web.ift.uib.no/~dominik/files/tools/framegen here]. To get a version from the CVS, check out the ''dcsctools'' package, create a directory ''build-arm'' in the dcsctools directory, enter it, execute ''../.autotools/acsetup.sh'' there. Do a ''../configure --host=arm'' followed by the usual ''make''. The framegen can only be executed on the DCS board and needs a mounted NFS directory with write access. [http://web.ift.uib.no/~dominik/files/tools/framegen.tar.gz framegen.tar.gz package]. === The rcuflashprog :=== You can retrieve the rcuflashprog from the CVS, or download a compiled version [http://web.ift.uib.no/~dominik/files/tools/rcuflashprog here]. Additionally you need the rcuflashprog [http://web.ift.uib.no/~dominik/files/tools/flashconf_rcu190606bg3 config file]. To program the Xilinx configuration frames to the flash, a file that holds the block, major and minor numbers, a sample file with all 936 frames can be found [http://web.ift.uib.no/~dominik/files/tools/frames936.txt here]. [http://web.ift.uib.no/~dominik/files/tools/rcuflashprog.tar.gz rcuflashprog.tar.gz package]. <font color="red"> updated 22.04.08 </font> === The rcuflash_feesvr:=== You can retrieve the rcuflash_feesvr from the CVS, or download a compiled linux version [http://web.ift.uib.no/~dominik/files/tools/rcuflash_feesvr here]. Additionally you need the rcuflash_feesvr [http://web.ift.uib.no/~dominik/files/tools/flashconf.conf config file]. To define the frames which are to be put into the blobs, the [http://web.ift.uib.no/~dominik/files/tools/frames936.txt frames936.txt] is needed as well. The binary command blocks are generated from the single frame files. You can use the framegen tool to extract these... To compile an own version from the CVS, check out the ''FeeServer'' package and create a directory ''build-dummy'' in the FeeServer directory and enter it. Execute ''../.autotools/acsetup.sh'' there. Do a ''../configure'' followed by the usual ''make''. The rcuflash_feesvr is then located in ''tools/src'' and can be run on any normal linux machine. [http://web.ift.uib.no/~dominik/files/tools/rcuflash_feesvr.tar.gz rcuflash_feesvr.tar.gz package] === Binary command blocks:=== ==== For the RCU firmware V1 (FWV: 190606):==== :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606/rcu_eraseflash.bin rcu_eraseflash.bin] :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606/rcu_iconfflash.bin rcu_iconfflash.bin] :This FW version does not support scrubbing or Frame by Frame readback. :Also keep in mind that this version has a slight error, which makes it necessary to erase the Xilinx before Flash access is possible! :The flash with this firmware version on it shows "190606" in the flash firmware version register. :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606/rcu_fw_190606_bcmds.tar.gz rcu_fw_190606_bcmds.tar.gz package] ==== For the RCU firmware V1bg (FWV: 190606bg):==== :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg/rcu_eraseflash.bin rcu_eraseflash.bin] :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg/rcu_iconfflash.bin rcu_iconfflash.bin] :This FW version does not support scrubbing or Frame by Frame readback. :The flash with this firmware version on it shows "190606b" in the flash firmware version register. :This version is currently (13:32, 14 Mar 2008 (CET)) programmed on most of the RCUs of the TPC. We saw this version not working with few RCUs (5 of ~108), these RCUs have the original 190606 version programmed to their flash instead. :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg/rcu_fw_190606bg_bcmds.tar.gz rcu_fw_190606bg_bcmds.tar.gz package] ==== For the RCU firmware V1bg2 (FWV: 190606bg2):==== :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg2/rcu_eraseflash.bin rcu_eraseflash.bin] :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg2/rcu_iconfflash.bin rcu_iconfflash.bin] :This FW version does not support scrubbing or Frame by Frame readback. :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg2/rcu_fw_190606bg2_bcmds.tar.gz rcu_fw_190606bg2_bcmds.tar.gz package] ==== For the RCU firmware V1bg3 (FWV: 190606bg3):==== :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg3/rcu_eraseflash.bin rcu_eraseflash.bin] :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg3/rcu_iconfflash.bin rcu_iconfflash.bin] :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg3/rcu_scrubflash.bin rcu_scrubflash.bin] :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg3/rcu_framesflash.bin rcu_framesflash.bin] :This FW version does not support any data readout (<b><font color="red">!</font></b>) and should therefore only be used for test purposes. :*[http://web.ift.uib.no/~dominik/files/tools/rcu_fw_190606bg3/rcu_fw_190606bg3_bcmds.tar.gz rcu_fw_190606bg3_bcmds.tar.gz package] ==== For the RCU firmware V2==== :*still to come [[User:Dominik|Dominik]] 09:21, 31 Mar 2008 (CEST) f7dd09652140d819cdb02e83fcf8a6117006856a Help:Contents 12 62 140 2009-02-23T08:01:29Z Dfe002 7 New page: ==Most frequent wiki markup explained== <!--It is intended to be brief, or as an overview. Otherwise why we separate the materials into different pages? Thus it's best NOT to add new mater... wikitext text/x-wiki ==Most frequent wiki markup explained== <!--It is intended to be brief, or as an overview. Otherwise why we separate the materials into different pages? Thus it's best NOT to add new materials or expand here. Add more examples or expand in other areas like Wikitext examples. Thanks!--> Here are the most frequently used types of wiki markup. If you need more help see [[http://meta.wikimedia.org/wiki/Help:Editing]]. <br clear="right" /> {| class="wikitable" ! style="width: 50%" | What it looks like ! style="width: 50%" | What you type |- | You can ''italicize text'' by putting 2 apostrophes on each side. 3 apostrophes will embolden '''the text'''. 5 apostrophes will embolden and italicize '''''the text'''''. (4 apostrophes don't do anything special -- there's just ''''one left over''''.) |<pre> You can ''italicize text'' by putting 2 apostrophes on each side. 3 apostrophes will embolden '''the text'''. 5 apostrophes will embolden and italicize '''''the text'''''. (4 apostrophes don't do anything special -- there's just ''''one left over''''.) </pre> |- | You should "sign" your comments on talk pages: * Three tildes give your user name: [[User:Example|Example]] ([[User talk:Example|talk]])<br /> * Four tildes give your user name plus date/time: [[User:Example|Example]] ([[User talk:Example|talk]]) 07:46, 27 November 2005 (UTC) * Five tildes give the date/time alone: 07:46, 27 November 2005 (UTC) |<pre> You should "sign" your comments on talk pages: * Three tildes give your user name: ~~~ * Four tildes give your user name plus date/time: ~~~~ * Five tildes give the date/time alone: ~~~~~ </pre> |- | <div style="font-size:150%;border-bottom:1px solid rgb(170,170,170);">Section headings</div> ''Headings'' organize your writing into sections. The Wiki software can automatically generate a [[Help:Section|table of contents]] from them. <div style="font-size:132%;font-weight:bold;">Subsection</div> Using more equals signs creates a subsection. <div style="font-size:116%;font-weight:bold;">A smaller subsection</div> Don't skip levels, like from two to four equals signs. Start with 2 equals signs not 1 because 1 creates H1 tags which should be reserved for page title. |<pre> == Section headings == ''Headings'' organize your writing into sections. The Wiki software can automatically generate a table of contents from them. === Subsection === Using more equals signs creates a subsection. ==== A smaller subsection ==== Don't skip levels, like from two to four equals signs. Start with 2 equals signs not 1 because 1 creates H1 tags which should be reserved for page title. </pre> |- id="lists" | * ''Unordered [[Help:List|list]]s'' are easy to do: ** Start every line with a star. *** More stars indicate a deeper level. * Previous item continues. ** A new line * in a list marks the end of the list. *Of course you can start again. |<pre> * ''Unordered lists'' are easy to do: ** Start every line with a star. *** More stars indicate a deeper level. * Previous item continues. ** A new line * in a list marks the end of the list. * Of course you can start again. </pre> |- | # ''Numbered lists'' are: ## Very organized ## Easy to follow # Previous item continues A new line marks the end of the list. # New numbering starts with 1. |<pre> # ''Numbered lists'' are: ## Very organized ## Easy to follow # Previous item continues A new line marks the end of the list. # New numbering starts with 1. </pre> |- | : A colon (:) indents a line or paragraph. A newline starts a new paragraph. <br> Often used for discussion on [[talk pages]]. : We use 1 colon to indent once. :: We use 2 colons to indent twice. ::: 3 colons to indent 3 times, and so on. |<pre> : A colon (:) indents a line or paragraph. A newline starts a new paragraph. <br> Often used for discussion on talk pages. : We use 1 colon to indent once. :: We use 2 colons to indent twice. ::: 3 colons to indent 3 times, and so on. </pre> |- | Here's a link to the [[Main page]]. But be careful - capitalization counts! |<pre> Here's a link to the [[Main page]]. </pre> |- | [[Intentionally permanent red link]] is a page that doesn't exist yet. You could create it by clicking on the link. |<pre> [[Intentionally permanent red link]] is a page that doesn't exist yet. You could create it by clicking on the link. </pre> |- | You can link to a page section by placing a "#" before its title: * [[Help:Contents#For editors]]. If multiple sections have the same title, add a number. [[#Example section 3]] goes to the third section named "Example section". |<pre> You can link to a page section by its title: * [[Help:Contents#For editors]]. If multiple sections have the same title, add a number. [[#Example section 3]] goes to the third section named "Example section". </pre> |} 0d116a971a03d5c72ee80293718ecb48d9ffb1e7 File:TPC-FEE blockdia.png 6 63 141 2009-02-23T08:32:20Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:FeeComChain.PNG 6 64 142 2009-02-23T08:32:52Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:FEE-chain.png 6 65 143 2009-02-23T08:33:44Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:FeeCom-Software.png 6 66 144 2009-02-23T08:34:16Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:AliPhsMonitoringDisplay.png 6 67 145 2009-02-23T08:37:16Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:AliPhsRCUTable2.png 6 68 146 2009-02-23T08:37:45Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:AliPhsControl.png 6 69 147 2009-02-23T08:38:10Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 User:Dfe002 2 70 148 2009-02-23T09:48:45Z Dfe002 7 New page: This is the personal page from Dominik Fehlker. wikitext text/x-wiki This is the personal page from Dominik Fehlker. 2b2f76b270f6ce2bca951bcd43c40da4c84894ba User:Dla041 2 71 149 2009-02-23T09:49:17Z Dfe002 7 New page: This is the personal page from Dag Toppe Larsen. wikitext text/x-wiki This is the personal page from Dag Toppe Larsen. 0eedac7417a9f7e5bb5ae9e6feecba893f7914ad User:Ksk019 2 72 150 2009-02-23T09:49:55Z Dfe002 7 New page: This is the personal page from Kyrre Skjerdal. wikitext text/x-wiki This is the personal page from Kyrre Skjerdal. 24182d788e5ea76cf617c80e7108add8c0598945 User:Lhe014 2 73 151 2009-02-23T09:50:27Z Dfe002 7 New page: This is the personal page from Lars-Halvard Thunold Helleve. wikitext text/x-wiki This is the personal page from Lars-Halvard Thunold Helleve. 70761b4dd27338e40f460a60d13be6a49ba844eb User:Stud4729 2 74 152 2009-02-23T09:56:37Z Dfe002 7 New page: This is the personal page from Johan Alme. wikitext text/x-wiki This is the personal page from Johan Alme. 5d0bf01c3f26c88be2e893080fa4ecf715556bff User:St12361 2 75 153 2009-02-23T09:56:57Z Dfe002 7 New page: This is the personal page from Stian Scisly Sagevik. wikitext text/x-wiki This is the personal page from Stian Scisly Sagevik. afa727f16f22048e29b270362ebc911fb5a58fbd User:St12243 2 76 154 2009-02-23T09:57:14Z Dfe002 7 New page: This is the personal page from Eli Renate Gruner. wikitext text/x-wiki This is the personal page from Eli Renate Gruner. 8d92a4ac060871bd137eb36afcc020af55dc24bc User:St12151 2 77 155 2009-02-23T09:57:31Z Dfe002 7 New page: This is the personal page from Njål Brekke. wikitext text/x-wiki This is the personal page from Njål Brekke. fbcb3c682b55a6423ac13f26a9f83462819b6619 User:St05915 2 78 156 2009-02-23T09:57:50Z Dfe002 7 New page: This is the personal page from Ketil Røed. wikitext text/x-wiki This is the personal page from Ketil Røed. 337effb8e080d4dde145fbf214f11820c15a1bd8 User:St05886 2 79 157 2009-02-23T09:58:08Z Dfe002 7 New page: This is the personal page from Gaute Øvrebekk. wikitext text/x-wiki This is the personal page from Gaute Øvrebekk. d1c475a6401ff561c4fd6cfbb845f6ec83c77b99 User:Rbo021 2 80 158 2009-02-23T09:58:26Z Dfe002 7 New page: This is the personal page from Rikard Bølgen. wikitext text/x-wiki This is the personal page from Rikard Bølgen. 97bdb7372f9456e9e498c0b807a1be3fd5010512 User:Mihho 2 81 159 2009-02-23T09:59:23Z Dfe002 7 New page: This is the personal page from Helge Opedal. wikitext text/x-wiki This is the personal page from Helge Opedal. 8897ed3bc28f5764d577a81466b060941848ccdf User:Pkj041 2 82 160 2009-02-23T10:00:03Z Dfe002 7 New page: This is the personal page from Petter Kjelkenes. wikitext text/x-wiki This is the personal page from Petter Kjelkenes. 5ddf938c29227faedfdb43e7058e27bda7646909 Busy Box and related 0 3 161 2009-02-24T09:10:17Z Nfyku 4 wikitext text/x-wiki [[Category:Alice|Trigger]] == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Trigger]] 394dfab2be04580f650323ddfef8f1beb4778867 162 2009-02-24T09:12:32Z Nfyku 4 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 5c542922f8bf9ff163e5ab1228a0ed6d6bc4277b PET Project 0 22 163 2009-02-24T12:23:11Z St12361 17 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET senter at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == Characterisation Cell == [[Photomultipliers]] == Characterisation setup and results == [[Category:Detector lab]] 13571ebadf420eaa6b5d9138d459cb174b329ea0 179 2009-02-24T14:56:16Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |ZE |50 |74,2 |65 |65 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. == Characterisation Cell == == Characterisation setup and results == [[Photomultipliers]] [[Category:Detector lab]] 012eed33a97864ed0ba61956ff59adb08931fcd4 180 2009-02-25T07:24:19Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. == Characterisation Cell == == Characterisation setup and results == [[Photomultipliers]] [[Category:Detector lab]] 9b23a949837278241969113863eac4e1c2f70bda 181 2009-02-25T07:32:04Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. == Technology == === Avalanche Photodiodes === An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. == Characterisation Cell == == Characterisation setup and results == [[Photomultipliers]] [[Category:Detector lab]] 348bcf3fad0fc16a18bd76c460ec2e376367a61b 182 2009-02-25T07:41:37Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. == Technology == === Avalanche Photodiodes === An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. == Characterisation Cell == == Characterisation setup and results == [[Photomultipliers]] [[Category:Detector lab]] 1da881ea3f370f0a2eacff3a20ea7cb4e5eb0304 193 2009-02-25T07:54:24Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === [[Image:MAPD_radiotracer.JPG‎|frame|right|200px|Fluorodeoxyglucose-FDG]] [[Image:MAPD_positronelectronannihilation.JPG‎‎|frame|left|200px|Positron - Electron Annihilation]] The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === [[Image:MAPD_crystaltransition.JPG‎ |frame|left|200px|Electronic transition in a crystal]] A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. == Technology == === Avalanche Photodiodes === An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. == Characterisation Cell == == Characterisation setup and results == [[Photomultipliers]] [[Category:Detector lab]] eddf8acf01d0dbc097a598c58bdcc35d90ccb24d 196 2009-02-25T08:08:19Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === [[Image:MAPD_radiotracer.JPG‎|frame|right|200px|Fluorodeoxyglucose-FDG]] [[Image:MAPD_positronelectronannihilation.JPG‎‎|frame|left|200px|Positron - Electron Annihilation]] The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === [[Image:MAPD_crystaltransition.JPG‎ |frame|left|200px|Electronic transition in a crystal]] A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === [[Image:MAPD_coincidenceprinciple.JPG‎ |frame|none|200px|Coincidence detection principle]] In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. [[Image:MAPD_coincidencecategories.JPG|frame||200px|3 different coincidence detection events]] * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. [[Image:MAPD tofprinciple.jpg‎ |frame|none|200px|Time of flight principle]] [[Image:MAPD tofprinciple2.JPG|frame|none|200px|Time of flight principle]] == Technology == === Avalanche Photodiodes === [[Image:MAPD structure.jpg‎|frame|right|200px|Structure of MAPD]] An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. [[Image:MAPD proportionalmode.jpg‎ ‎|frame|right|200px|proportional mode]] * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. [[Image:MAPD geigermode.jpg‎‎|frame|right|200px|Geiger mode]] [[Image:MAPD_passivequenching.jpg‎‎|frame|right|200px|passive quenching]] The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. == Characterisation Cell == == Characterisation setup and results == == [[Photomultipliers]] == [[Category:Detector lab]] 30aff3cb6c53c8073313d5bd6ffbb54a3f8336d6 Photomultipliers 0 83 164 2009-02-24T12:55:12Z St12361 17 New page: <big>'''Photomultipliers'''</big> ===Critical Parameters=== {| border="1" cellpadding="5" cellspacing="0" |Parameter |Description |Typical Value (Fast PTM) |- |Rise Time (TR) |The time ... wikitext text/x-wiki <big>'''Photomultipliers'''</big> ===Critical Parameters=== {| border="1" cellpadding="5" cellspacing="0" |Parameter |Description |Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [[Image:[[Image:PMT_Parameters.jpg]]]] 4911071f322e3108f70dc90b8198c291877b15ff 165 2009-02-24T13:08:28Z St12361 17 wikitext text/x-wiki ===Critical Parameters=== {| border="1" cellpadding="5" cellspacing="0" |Parameter |Description |Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [[Image:[[Image:PMT_Parameters.jpg]]]] 840c51c75688b7378276828fa93aa2441ac1aac4 167 2009-02-24T13:10:28Z St12361 17 wikitext text/x-wiki ===Critical Parameters=== {| border="1" cellpadding="5" cellspacing="0" |Parameter |Description |Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [Image:PMT_Parameters.jpg] 7f7d950efad39a2fee910701544a449b47d36a61 168 2009-02-24T13:11:13Z St12361 17 wikitext text/x-wiki ===Critical Parameters=== {| border="1" cellpadding="5" cellspacing="0" |Parameter |Description |Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [[Image:Photomultiplier.jpg]] 594d4408589be38c8e9eb5a6c2c02b7446a9bbfe 169 2009-02-24T13:12:36Z St12361 17 wikitext text/x-wiki ===Critical Parameters=== {| border="1" cellpadding="5" cellspacing="0" |Parameter |Description |Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [[Image:PMT_Parameters.jpg]] 7f1e21e2e09b2f530738b063f8d548129149e603 170 2009-02-24T13:29:20Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="5" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) |- |R1161 |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |- |R5505 |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |} bd378e7b2188c5880c5797ba8ba353a0e7d8aebc 171 2009-02-24T13:43:07Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="2" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) !Pricing |- |R1161 |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |x |- |R5505 |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |x |- |R3478 |PMT - Head On |1700 V |1,7E+06 |300 to 650 |420 |6 nA |1,3 |14 |0,36 |x |- |7400U-02 |PMT - Head On |800 V |5,0E+05 |300 to 850 |500 |2 nA |0,78 |5,4 |0,23 |6404 SEK |- |7400-02 |PMT - Head On |800 V |7,0E+05 |300 to 850 |420 |0,2 nA |0,75 |5,4 |0,28 |6404 SEK |- |R380952 |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |2000/s |0,15 |0,55 |0,025 |126,346 SEK |- |R5916U-52 |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |0,5 |0,18 |1 |0,09 |148,643 SEK |} 41c4f3397382c37ac9a93775a6334dca5f5a640c 172 2009-02-24T13:45:15Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="2" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) !Pricing |- |R1161 |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |x |- |R5505 |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |x |- |R3478 |PMT - Head On |1700 V |1,7E+06 |300 to 650 |420 |6 nA |1,3 |14 |0,36 |x |- |7400U-02 |PMT - Head On |800 V |5,0E+05 |300 to 850 |500 |2 nA |0,78 |5,4 |0,23 |6404 SEK |- |7400-02 |PMT - Head On |800 V |7,0E+05 |300 to 850 |420 |0,2 nA |0,75 |5,4 |0,28 |6404 SEK |- |R380952 |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |2000/s |0,15 |0,55 |0,025 |126,346 SEK |- |R5916U-52 |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |0,5 |0,18 |1 |0,09 |148,643 SEK |} ===So whats's up with the MCP's?=== Microchannel Plate PMT, has plates containing numerous small holes, microchannels, which are lined with a secondary emissive dynode material. Electrons are amplified as they drop down the voltage gradients across the microchannel plate. MCP-PMT shows the fastes time response due to the restricted range of electron paths and short electron travel distance. Disadvantage is lower gain and photocurrent typ at 100 nA vs. 10-100uA for dyanode PMT [[Image:MCP-PMT.jpg]] 0980f7a19cba8fd84b41208b6253f8d54887a9b6 177 2009-02-24T14:19:03Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} <BR /> <BR /><BR /> [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="2" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) !Pricing |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r1166.php R1161] |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |x |- |R5505 |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |x |- |R3478 |PMT - Head On |1700 V |1,7E+06 |300 to 650 |420 |6 nA |1,3 |14 |0,36 |x |- |7400U-02 |PMT - Head On |800 V |5,0E+05 |300 to 850 |500 |2 nA |0,78 |5,4 |0,23 |6404 SEK |- |7400-02 |PMT - Head On |800 V |7,0E+05 |300 to 850 |420 |0,2 nA |0,75 |5,4 |0,28 |6404 SEK |- |R380952 |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |2000/s |0,15 |0,55 |0,025 |126,346 SEK |- |R5916U-52 |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |0,5 |0,18 |1 |0,09 |148,643 SEK |} ===So whats's up with the MCP's?=== Microchannel Plate PMT, has plates containing numerous small holes, microchannels, which are lined with a secondary emissive dynode material. Electrons are amplified as they drop down the voltage gradients across the microchannel plate. MCP-PMT shows the fastes time response due to the restricted range of electron paths and short electron travel distance. Disadvantage is lower gain and photocurrent typ at 100 nA vs. 10-100uA for dyanode PMT <BR /> [[Image:MCP-PMT.jpg]] 1c8d3d69754ce6e4bac393b4f74a01ab60d2e8db 178 2009-02-24T14:22:44Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} <BR /> [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="2" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) !Pricing |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r1166.php R1161] |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |x |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5509-42.php R5505] |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |x |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3478.php R3478] |PMT - Head On |1700 V |1,7E+06 |300 to 650 |420 |6 nA |1,3 |14 |0,36 |x |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u-02.php 7400U-02] |PMT - Head On |800 V |5,0E+05 |300 to 850 |500 |2 nA |0,78 |5,4 |0,23 |6404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u.php 7400-02] |PMT - Head On |800 V |7,0E+05 |300 to 850 |420 |0,2 nA |0,75 |5,4 |0,28 |6404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3809u-52.php R3809-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |2000/s |0,15 |0,55 |0,025 |126,346 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5916u-52.php R5916U-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |0,5 |0,18 |1 |0,09 |148,643 SEK |} ===So whats's up with the MCP's?=== Microchannel Plate PMT, has plates containing numerous small holes, microchannels, which are lined with a secondary emissive dynode material. Electrons are amplified as they drop down the voltage gradients across the microchannel plate. MCP-PMT shows the fastes time response due to the restricted range of electron paths and short electron travel distance. Disadvantage is lower gain and photocurrent typ at 100 nA vs. 10-100uA for dyanode PMT <BR /> [[Image:MCP-PMT.jpg]] ef75d780c6591af292b91fcde82a4c19f57c9f9d File:PMT Parameters.jpg 6 84 166 2009-02-24T13:09:38Z St12361 17 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MCP-PMT.jpg 6 85 173 2009-02-24T13:46:43Z St12361 17 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 User talk:Dfe002 3 86 174 2009-02-24T14:05:07Z Dfe002 7 New page: Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei ... wikitext text/x-wiki Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei 85de3bffc6039419fbe2f434fc02b84536094bb9 175 2009-02-24T14:05:17Z Dfe002 7 wikitext text/x-wiki Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei<br> Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei Hei e0d4320ce996bc4341d7f9b1b15a3bbfb062a370 176 2009-02-24T14:06:45Z Dfe002 7 Removing all content from page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD geigermode.jpg 6 87 183 2009-02-25T07:42:14Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD coincidenceprinciple.JPG 6 88 184 2009-02-25T07:42:22Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD coincidencecategories.JPG 6 89 185 2009-02-25T07:42:51Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD crystaltransition.JPG 6 90 186 2009-02-25T07:43:06Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD positronelectronannihilation.JPG 6 91 187 2009-02-25T07:43:14Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD proportionalmode.jpg 6 92 188 2009-02-25T07:43:22Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD radiotracer.JPG 6 93 189 2009-02-25T07:43:28Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD structure.jpg 6 94 190 2009-02-25T07:43:34Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD tofprinciple2.JPG 6 95 191 2009-02-25T07:43:40Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MAPD tofprinciple.jpg 6 96 192 2009-02-25T07:43:48Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Simulering av VHDL 0 34 194 2009-02-25T08:02:51Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med QuestaSim=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//QuestaSim) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs eller den innebygde teksteditoren i QuestaSim.Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter QuestaSim, og startes med kommandoen <pre> vsim & </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. Start et nytt prosjekt med <pre> File > New > Project </pre> Velg et fornuftig navn og katalog. Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i QuestaSim== Når koden kompilerer feilfritt kan den simuleres i QuestaSim. Dette startes med: <pre> vsim & </pre> QuestaSim bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i QuestaSim-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i QuestaSim, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> c7c9a87364f7b95f50b789a99451077cb707568e 200 2009-02-25T10:13:33Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa== Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando i et terminalvindu og start deretter et nytt skall. <pre> ssh -X mikroserver1 /prog/design_kits/micro.init.csh eller /prog/design_kits/micro.init.bash </pre> Senere skriver man følgende i et teminalvindu: <pre> ssh -X mikroserver1 mentor questa </pre> ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs eller den innebygde teksteditoren i Questa. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter Questa, og startes med kommandoen <pre> vsim & </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. Start et nytt prosjekt med <pre> File > New > Project </pre> Velg et fornuftig navn og katalog. Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim & </pre> Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] f68fe9d24a7bd8e0e7d7975f4f714781730ab826 201 2009-02-25T10:25:56Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa== Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando i et terminalvindu og start deretter et nytt skall. <pre> ssh -X mikroserver1 /prog/design_kits/micro.init.csh eller /prog/design_kits/micro.init.bash </pre> Senere skriver man følgende i et teminalvindu: <pre> ssh -X mikroserver1 mentor questa </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs eller den innebygde teksteditoren i Questa. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Simuleringsverktøyet for VHDL (og verilog) heter Questa, og startes med kommandoen <pre> vsim & </pre> Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim & </pre> Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] c99572cfd02c9b8b800f0403b91820c64f252dd3 File:MAPD passivequenching.jpg 6 97 195 2009-02-25T08:03:46Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Modelsim/Questa 0 33 197 2009-02-25T10:07:14Z Nfyku 4 [[Modelsim]] moved to [[Modelsim/Questa]] wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] 02520b3a826446cadb898f5f72bc07059a5f2c49 Modelsim 0 98 198 2009-02-25T10:07:14Z Nfyku 4 [[Modelsim]] moved to [[Modelsim/Questa]] wikitext text/x-wiki #REDIRECT [[Modelsim/Questa]] 2bd37aece94713551ae800535452068c468bee84 Microelectronics group 0 25 199 2009-02-25T10:07:42Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphuics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System [[Category:Mikroelektronikk]] a3c78f627260f9df649a6882e78b0f672851c87a File:Questa new project.png 6 99 202 2009-02-25T10:26:29Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Photomultipliers 0 83 203 2009-02-25T14:17:59Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} <BR /> [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="2" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) !Pricing |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r1166.php R1161] |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |x |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5509-42.php R5505] |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |16 010 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3478.php R3478] |PMT - Head On |1700 V |1,7E+06 |300 to 650 |420 |6 nA |1,3 |14 |0,36 |3 837 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u-02.php 7400U-02] |PMT - Head On |800 V |5,0E+05 |300 to 850 |500 |2 nA |0,78 |5,4 |0,23 |6404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r2083.php R2083] |PMT - Head On |3000 V |2,5E+06 |300 to 650 |420 |100 nA |0,7 |16 |0,37 |14 955 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u.php 7400-02] |PMT - Head On |800 V |7,0E+05 |300 to 850 |420 |0,2 nA |0,75 |5,4 |0,28 |6404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3809u-52.php R3809-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |2000/s |0,15 |0,55 |0,025 |126,346 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5916u-52.php R5916U-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |0,5 |0,18 |1 |0,09 |148,643 SEK |} ===So whats's up with the MCP's?=== Microchannel Plate PMT, has plates containing numerous small holes, microchannels, which are lined with a secondary emissive dynode material. Electrons are amplified as they drop down the voltage gradients across the microchannel plate. MCP-PMT shows the fastes time response due to the restricted range of electron paths and short electron travel distance. Disadvantage is lower gain and photocurrent typ at 100 nA vs. 10-100uA for dyanode PMT <BR /> [[Image:MCP-PMT.jpg]] be77f7a27bf50f7210fd95b60d74368a09f223be 204 2009-02-25T14:19:08Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} <BR /> [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="2" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) !Pricing |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r1166.php R1161] |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |x |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5509-42.php R5505] |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |16 010 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3478.php R3478] |PMT - Head On |1700 V |1,7E+06 |300 to 650 |420 |6 nA |1,3 |14 |0,36 |3 837 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u-02.php 7400U-02] |PMT - Head On |800 V |5,0E+05 |300 to 850 |500 |2 nA |0,78 |5,4 |0,23 |6 404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r2083.php R2083] |PMT - Head On |3000 V |2,5E+06 |300 to 650 |420 |100 nA |0,7 |16 |0,37 |14 955 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u.php 7400-02] |PMT - Head On |800 V |7,0E+05 |300 to 850 |420 |0,2 nA |0,75 |5,4 |0,28 |6404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3809u-52.php R3809-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |2000/s |0,15 |0,55 |0,025 |126 346 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5916u-52.php R5916U-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |0,5 |0,18 |1 |0,09 |148 643 SEK |} ===So whats's up with the MCP's?=== Microchannel Plate PMT, has plates containing numerous small holes, microchannels, which are lined with a secondary emissive dynode material. Electrons are amplified as they drop down the voltage gradients across the microchannel plate. MCP-PMT shows the fastes time response due to the restricted range of electron paths and short electron travel distance. Disadvantage is lower gain and photocurrent typ at 100 nA vs. 10-100uA for dyanode PMT <BR /> [[Image:MCP-PMT.jpg]] 8c6b6064b679d689240cf754147b6e18edea221e Modelsim/Questa 0 33 205 2009-02-26T12:12:53Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur [[Wikipedia:vhdl]] [[Category:Mikroelektronikk]] a5fdf292c26ccf1ac3f48ad49d3a44336c9bfc8b 206 2009-02-26T12:13:57Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[:Wikipedia:vhdl]] [[Category:Mikroelektronikk]] ee03082ca00823e04073096a6b56a4c4ed4896d2 207 2009-02-26T12:15:04Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/Vhdl|Wikipedia:vhdl]] [[Category:Mikroelektronikk]] 32753a0a8c2dadfae7036427db2127f68a77266f 208 2009-02-26T12:15:24Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/Vhdl Wikipedia:vhdl]] [[Category:Mikroelektronikk]] bfc9f26fb7bc6746f2533856d6111568f367633c 209 2009-02-26T12:16:13Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /pakke/mgc/altera/vhdl/apex20ke* [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDl]] [[Category:Mikroelektronikk]] 00cf2577abfac275ac8a08143848b2b66e58ab43 Detector lab 0 21 210 2009-02-27T10:56:02Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * Hege ... 0fd38c5880cb2b9c7c43d9bb5b89055a6d9b855b 225 2009-03-03T13:11:33Z St12361 17 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Lab Equipment == List of lab equipment, how to's and service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * Hege ... 1dd5dbc3dc087dfdc28b4937f617e91910dc6786 226 2009-03-03T13:12:33Z St12361 17 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * Hege ... ba7cfa92bcf88f59021e9447568b1a8cc3196ce9 Xilinx 0 100 211 2009-03-02T07:53:04Z Nfyku 4 New page: [[EDK tutorial 1]] Kom i gang med MicroBlaze og Xilinx Project Studio [[EDK tutorial 2]] Installere en generell buss IP for MicroBlaze til ekstern hardware (LCD skjerm) [[EDK tutorial 3]... wikitext text/x-wiki [[EDK tutorial 1]] Kom i gang med MicroBlaze og Xilinx Project Studio [[EDK tutorial 2]] Installere en generell buss IP for MicroBlaze til ekstern hardware (LCD skjerm) [[EDK tutorial 3]] VHDL design med ISE (implementering av enkel RS232 transmitter på virtex-4) [[Category:Mikroelektronikk]] f8acac995ceec9e552d5a6367cdd3d819d72eda2 EDK tutorial 1 0 101 212 2009-03-02T08:05:02Z Nfyku 4 New page: == Komme i gang med Xilix Projekt Studio 7.1i == En enkel men detaljert steg-for-steg veiledning til implementasjon av MicroBlase prosessoren på MEMEC protokort DS-BD-V4LX25MB. Dette er... wikitext text/x-wiki == Komme i gang med Xilix Projekt Studio 7.1i == En enkel men detaljert steg-for-steg veiledning til implementasjon av MicroBlase prosessoren på MEMEC protokort DS-BD-V4LX25MB. Dette er en kort veiledning for å komme i gang med et enkelt microblaze system. Dette oppsettet basere seg på et prototypekort fra MEMEC samt bruk av "base System Builder" filer. Du vil trenge XPS innstalert på maskinen samt tilgang til hyperterminal eller annen terminal som kan lese com-portene på PC'en din. == DEL 1 - Generere Prosjektfiler === === Installere MEMEC repository-files=== Før vi kan komme i gang med XPS, må vi sørge for at MEMEC's repository-filer er innstalert på maskinen. Filene kan lastes ned <a href="uploads/Memec_XBD_Files_EDK63h.zip">her</a> som en zip fil hvis de ikke allerede er innstalert på maskinen. Unzip filene legg dem i en katalog. Husk hvor du har plasert katalogen da du trenger å oppgi plaseringen senere. === Innstalere RS232-USB driver === Vi er også nødt til å ha installert USB-driveren hvis vi ønsker å kunne bruke RS232 til USB broen som er på MEMEC-kortet. Du finner driverene til chipen [[Media:cp2101.zip]] === Starte Xilinx Project Studio === Start programmet som heter "Xilinx Platform Studio". Når progammet har startet opp vil du få opp et vindu med spørsmål om lage et nytt prosjekt. Velg "Base System Builder Wizard" og klikk "OK". I neste vindu får en spøsmål om å lage en ny prosjekt fil. Skriv inn prosjektnavnet "TEST" og bruk browsefunksjonen til å velge en passende plass å legge prosjektfilene. Klikk så for å velge "User Peripheral Repository search patch for IP....", og bruk "browse" funksjonen til å finne katalogen hvor du innstalerte MEMEC repository files. Gå så videre med å klikke "ok". [[Image:EDK_XPS_01.jpg]] I neste vindu får du to valg. Merk "I would like to create a new design" og klikk "next". [[Image:EDK_XPS_02.jpg]] Her merker du "I would like to create a system for the following development board" og velger korekt prtotypekort fra menyen. Trykk så "next". [[Image:EDK_XPS_03.jpg]] I neste vindu velger du "MicroBlaze" og trykker "next". [[Image:EDK_XPS_04.jpg]] Du vil nå få opp et vindu hvor du kan sepsifisere MicroBlaze prosessorens egenskaper. Referanseklokken skal være 100MHz. Systemklokken kan settes til 100MHz(eller lavere hvis det skulle være ønskelig). Prosessorconfigurasjonen settes til "On-chip H/W debug module". Sett "Local data and instruction memory" til ønsket verdi, i vårt tilfelle 32kB. Velg "no cache". Klikk så "next". [[Image:EDK_XPS_05.jpg]] Du vil nå få opp et vindu hvor du kan velge I/O interface for prosessoren. Merk vekk "Ethernet MAC" og sett hastigheten på "RS232_USB" opp til maks (921600). Trykk så "next". [[Image:EDK_XPS_06.jpg]] I dette vinduet lar du alt stå som det er og trykker "next". [[Image:EDK_XPS_07.jpg]] Her settes minneområdene. La alt sto som det er og trykk "next". [[Image:EDK_XPS_08.jpg]] I neste vindu får du spørsmål om å legge til enheter. Ikke gjør noe men trykk "next". Du vil nå få opp et vindu med spørsmål om hva som skal være standar IO enhet. trykk også på valg for "Memory Test". Velg RS232 og trykk "next2. [[Image:EDK_XPS_09.jpg]] I vinduet som nå kommer opp kan du velge hvor du vil plasere intruksjon, data og stack minne. La de valgte verdier stå og trykk "next". [[Image:EDK_XPS_10.jpg]] Du vil nå få opp en oversikt over prosessoren og adresser til de forskjellige enhetene koblet til den. Trykk "Generate" og du vil få generert et prosjekt basert på dine valg. [[Image:EDK_XPS_11.jpg]] Du får så opp et vindu som sier at prosjektet er generert. Trykk "Finish". Du vil nå se at prosjektet blir lastet inn i XPS. Du får også et lite vindu som heter "the next step". Velg "start using platform studio" og trykk "ok". [[Image:EDK_XPS_12.jpg]] == DEL 2 - Kjøre en testaplikasjon == Du har nå fått et komplett MicroBlaze system i ditt prosjekt. Det neste steget blir å kjøre en testaplikasjon som ligger i prosjektet ditt og på denne måten få bekreftet at prosessoren kjører som den skal. === Synthesisere prosjektet === For å få generert en prosjektfil som kan lastes ned på FPGA'en må en gå på tools menyen og trykke "Generate Bitstream". XPS vil nå jobbe i en til to timer. [[Image:EDK_XPS_16.jpg]] Når bitmap filen er ferdig vil du få følgende beskjed i outputvinduet: <pre> Analyzing file TestApp_Memory/executable.elf... INFO:MDT - BRAM lmb_bram will be initialized with ELF of processor microblaze_0 Running Data2Mem with the following command: data2mem -bm implementation/system_bd -bt implementation/system.bit -bd TestApp_Memory/executable.elf tag lmb_bram -o b implementation/download.bit Memory Initialization completed successfully. Done. </pre> === Enable XMD debug === Gå på "optionsmenyen" og velg "XMD debug Options". I vinduet som kommer opp merker du av "hardware" og trykker "save". [[Image:EDK_XPS_19.jpg]] === Kompilere programkoden === Til venstre i XPS åpner en vinduet som heter "Application". Høyreklikk på "xmdstud" og pass på at "mark to initialize BRAMs" er er umarkert. Gjør det samme med "Project: TestApp_Memory" og sørg for at "mark to initialize BRAMs" er markert. === Legg til opsjoner === I prosjektlista dobbelklikker du på source og åpner filen som ligger der. Du vil da få åpnet kildekoden din i hovedvinduet. [[Image:EDK_XPS_14.jpg]] Bla deg ned i TestApp_Memory.c filen og finn main rutinen. Her legger du til "<em>print("Dette er en test av 'ditt navn'\n\r"); </em>". <pre> //==================================================== int main (void) { print("-- Entering main() --\r\n"); print("Dette er en test av 'ditt navn'\n\r"); /* * MemoryTest routine will not be run for the memory at * 0x00000000 (dlmb_cntlr) * because it is being used to hold a part of this application program */ </pre> Trykk på lagre og åpne deretter menyen "tools" og velg "Build All User Aplication". All programkode vil da bli kompilert og du vil få en utskrift som forteller størrelse på progamkoden. [[Image:EDK_XPS_13.jpg]] <pre> mb-size TestApp_Memory/executable.elf text data bss dec hex filename 3968 300 8 4276 10b4 TestApp_Memory/executable.elf Done. </pre> === Laste over bitfilen til virtex-4 === Koble til parallellport-programereren fra xilinx til kortet og koble til en seriellkabel mellom kortet og PC'en. Start opp hyperterminal eller et alternativt program. Velg com1. I neste vindu setter du baudraten til 9600, databits til 8, velger "none" på parity, setter stopbit til 1 og velger hardware på "flow control". Trykk så på "apply". [[Image:EDK_XPS_17.jpg]] === Overføre sowftwaren til MicroBlaze prosessoren === Neste steg er nå å laste over prosessoren på FPGA'en. Slå på strømmen på prototypekortet. Velg så tools menyen og trykk på "Download". Når nedlastingen er ferdig vil du få opp følgende tekst i outputvinduet: <pre> INFO:iMPACT:579 - '1': Completed downloading bit file to device. INFO:iMPACT:580 - '1':Checking done pin ....done. '1': Programmed successfully. Elapsed time = 3 sec. // === BATCH CMD : quit Done. </pre> Du vil nå starte kjøringen av programet straks nedlastingen er fredig. I hyperterminal vil du få opp en tekst som sier: <pre> -- Entering main() -- Dette er en test av 'ditt navn' Starting MemoryTest for DDR_SDRAM_32Mx16: Running 32-bit test...PASSED! Running 16-bit test...PASSED! Running 8-bit test...PASSED! -- Exiting main() -- </pre> Gratulerer!!! Du har nå implementert et enkelt softcore prosessorsystem på FPGA'en. [[Category:Mikroelektronikk]] e374eec5a71dc56eee0812275d8336a8e9990bf5 EDK tutorial 2 0 102 213 2009-03-02T08:12:18Z Nfyku 4 New page: == Installering av en generell IP og tilhørende softwaredriver for MicroBlaze i Xilix Projekt Studio 7.1i == En enkel steg-for-steg veiledning til implementasjon av en softwaredriver for... wikitext text/x-wiki == Installering av en generell IP og tilhørende softwaredriver for MicroBlaze i Xilix Projekt Studio 7.1i == En enkel steg-for-steg veiledning til implementasjon av en softwaredriver for LCD på MEMEC protokort DS-BD-V4LX25MB Dette er en kort veiledning lage software-drivere til eksterne komponenter i et microblaze system. Dette oppsettet basere seg på et prototypekort fra MEMEC. Vi vil ta utgangspunkt i det lille 2x16 tegns LCD-skjermen som følger med på kortet. Har du kjørt tutorial 1 vil du legge merke til at LCD displayet ikke ble inkludert i prosjektet. Dette må dermed legges til manuelt i ettertid. Siden det er snakk om en enkel IO enhet kan vi bruke en generell buss-IP uten å tenke på ekstra VHDL-kode som må implementeres. Du vil trenge XPS innstalert på maskinen samt tilgang til hyperterminal eller annen terminal som kan lese com-portene på PC'en din. == DEL 1 - Legge til IP== === Lage IP === Åpne prosjektet fra tutorial 1 i XPS. Åpne menyen "project" og velg "Add/Edit Cores... (dialog)". [[Image:EDK_XPS_20.jpg]] Du vil nå få opp en oversikt over alle enheter som er tilkoblet prosessoren. I listen over tilgjenglige IP'er, velg "opb_gpio" og trykk "add". Du vil nå legge til en ny ip. Gi Ip'en navnet "LCD_module" og klikk "apply". [[Image:EDK_XPS_21.jpg]] I samme vindu velger du så menyen "Bus Connections". Bla deg ned på listen her til du finner "LCD_module sopb". Marker enhenten som slave for mb_opb bussen. Klikk så på "apply". [[Image:EDK_XPS_22.jpg]] Gå videre til "Adresses". Her trykker du på knappen "Generate Addresses". XPS vil da automatisk generere en adresse til IP'en vår. Du vil få opp et vindu som spør om du vil fortsette. klikk "Yes". Ip'em din vil nå ligge i adresseområdet 0x40040000-0x4004ffff, har du fått en annen verdi så husk denne verdien da du må bruke denn og ikke 0x40040000 videre i tutorialen. Trykk så "apply". [[Image:EDK_XPS_23.jpg]] Gå nå til menyen "Ports". Her skal vi koble interne signaler fra IP'en til et signal som senere kan rutes til pinner på FPGA'en. Begynn med å velge "LCD_module" i "Ports Filter". Bøa deg så ned i "List of Ports" til du finner signalene til vår IP. Hold nede "ctrl" tasten og velg "OPB_CLK" samt "GPIO_d_out". Trykk så "Add" for å legge dem til "Internal Ports Connection". For signalet OPB_CLK forandrer du "Net name" til "sys_clk_s". For signalet "GPIO_d_out" forandrer du "Net name" til fpga_lcd_module". I listen over "External Ports Connection" trykker du "Add Port". Du får nå opp et lite vindu som du må fylle ut data i. I linjen for "Port Name" skriver du "fpga_lcd_module". Sett "Port Polaritet" til "OUT" og gi "connected to" navnet "fpga_lcd_module". Trykk "Ok". Du må nå legge til "Range" for den eksterne porten vi definerte. Skriv inn "[0:9]". Trykk "Apply". [[Image:EDK_XPS_24.jpg]] Velg så menyen "Parameters". I rullegardinlisten over IP'er velger du LCD_module. Marker parametrene; "C_GPIO_WIDTH", "C_IS_DUAL", "C_ALL_INPUTS" og "C_IS_BIDIR". Trykk "Add". Sett så verdien til 10 for "C_GPIO_WIDTH" og til 0 for de tre andre. Trykk "Apply" og "Ok". [[Image:EDK_XPS_25.jpg]] Du har nå lagt til en IP som er koblet til OPB bussen og har 10 signallinjer(utganger) som kan kobles til fpga'ens pinner. Siden det her er snakk om en Ip som allerede eksisterer slipper vi å lage egene softwaredrivere til IP'en. === Koble til eksterne pinner === Neste steg er nå å rute våre 10 signal til rette pinner på fpga'en. Det gjøres i "user constraint" filen. Denne finner en under "Project files" og den heter "system.ucf". Åpne denne filen. [[Image:EDK_XPS_26.jpg]] Her legger vil til signalene våre og hvilke pinner de skal bruke samt hvilke type signal det er snakk om: <pre> ############################################################################ ## This system.ucf file is generated by Base System Builder based on the ## settings in the selected Xilinx Board Definition file. Please add other ## user constraints to this file based on customer design specifications. ############################################################################ Net sys_clk_pin LOC=B13 | IOSTANDARD = LVCMOS25; Net sys_rst_pin LOC=AB9; Net sys_rst_pin PULLUP | IOSTANDARD = LVCMOS25; ## System level constraints Net sys_clk_pin PERIOD = 10000 ps; Net sys_rst_pin TIG; ## FPGA pin constraints ## Legg til våre signaler her ## lcd_enable (9) Net fpga_lcd_module<0> LOC = AD10 | IOSTANDARD = LVCMOS25; ## lcd_RS (8) Net fpga_lcd_module<1> LOC = AC11 | IOSTANDARD = LVCMOS25; ## lcd_data( 7-0 ) Net fpga_lcd_module<2> LOC = Y6 | IOSTANDARD = LVCMOS25; Net fpga_lcd_module<3> LOC = W7 | IOSTANDARD = LVCMOS25; Net fpga_lcd_module<4> LOC = AD6 | IOSTANDARD = LVCMOS25; Net fpga_lcd_module<5> LOC = AE6 | IOSTANDARD = LVCMOS25; Net fpga_lcd_module<6> LOC = AC7 | IOSTANDARD = LVCMOS25; Net fpga_lcd_module<7> LOC = AD8 | IOSTANDARD = LVCMOS25; Net fpga_lcd_module<8> LOC = AC8 | IOSTANDARD = LVCMOS25; Net fpga_lcd_module<9> LOC = AC9 | IOSTANDARD = LVCMOS25; Net fpga_0_RS232_RX_pin LOC=B14 | IOSTANDARD = LVCMOS25; Net fpga_0_RS232_TX_pin LOC=T7 | IOSTANDARD = LVCMOS33; Net fpga_0_RS232_req_to_send_pin LOC=T8 | IOSTANDARD = LVCMOS33; </pre> Lagre filen når du er ferdig. Gå på "tools" menyen og velg "Update bitstream". XPS vil nå lage nye bitfiler med driveren inkludert. Dette tar gjene 1 til 2 timer. Bruk denne tiden til å ta deg en kaffe og gratulere deg selv over at du nå er klar til neste steg. == DEL 2 - Lage program til LCD == === Includefil for lcd-skjerm === For å kunne teste ut lcd-skjermen og IP'en vi har laget til den trenger vi et lite bibliotek med funkjsoner som lar oss skrive på skjermen. Nedenfor er det listet opp enn c fil som inneholder disse rutinene, samt en header fil. Disse filene, <a href="uploads/lcd.c">lcd.c</a> og <a href="uploads/lcd.h">lcd.h</a>, må legges inn i prosjektkatalogen din på følgende sted: "...test/TestApp_Memory/src" <pre> //------------------------------------- //-- Masteroppgave 2005 -- //-- av -- //-- Tor Aleksander Birk Danielsen -- //-- -- //-- Driverfunkjsoner for 2x16 -- //-- lcd display -- //------------------------------------- // // LCD_module_address må defineres #include "xgpio_l.h" #include "xutil.h" #define LCD_module_address 0x40040000 #define lcd_type 2 // 0=5x7, 1=5x10, 2=2 lines #define lcd_line_two 0x40 // LCD RAM address for the second line //======================================= //== liten delayfunkjson brukt i lcd.c == //======================================= void delay_ms(int delay_m){ volatile int delay=0; volatile int i=0; for (i=0; i<= delay_m; i++){ for (delay=0; delay<9000; delay++){ //delay } } } //================================ //== sender byte til lcd skjerm == //================================ void lcd_send_byte(int address, Xuint32 data){ if (address != 0) data = data | 0x100; else data = data & 0xFF; XGpio_mSetDataReg(LCD_module_address, 1, data); data = data | 0x200; delay_ms(2); XGpio_mSetDataReg(LCD_module_address, 1, data); delay_ms(5); data = data & 0x1FF; XGpio_mSetDataReg(LCD_module_address, 1, data); } //=================================* //== gå til punkt på lcd skjermen == //=================================* void lcd_gotoxy(int x,int y) { int address; if(y!=1) address=lcd_line_two; else address=0; address+=x-1; lcd_send_byte(0,0x80|address); } //========================* //== skriver tegn på lcd == //========================* void lcd_putc( char c) { switch (c) { case '\f' : lcd_send_byte(0,1); delay_ms(2); break; case '\n' : lcd_gotoxy(1,2); break; case '\b' : lcd_send_byte(0,0x10); break; default : lcd_send_byte(1,c); break; } } //================================ //== initialiserer LCD skjermen == //================================ void lcd_init(void){ int i; Xuint32 init[4]; init[0] = 0x00f; //init display init[1] = 0x001; //clear display init[2] = 0x038; //enable 8 bit data XGpio_mSetDataDirection(LCD_module_address, 1, 0x00000000); delay_ms(100); for(i=0; i<=2; i++){ XGpio_mSetDataReg(LCD_module_address, 1, init[i]); init[i] = init[i] | 0x200; //enable høy delay_ms(2); XGpio_mSetDataReg(LCD_module_address, 1, init[i]); delay_ms(100); init[i] = init[i] & 0x1FF; //enable lav XGpio_mSetDataReg(LCD_module_address, 1, init[i]); delay_ms(100); } } //=======================================* //== Skriver strenger til LCD displayet == //=======================================* void lcd_string(char *s){ while (*s) { lcd_putc(*s); s++; } return; } //=============================================== //== Skriver ut en testmelding på lcd skjermen == //=============================================== void lcd_test_msg(void){ lcd_putc('\f'); lcd_gotoxy(1,1); lcd_string("* Test av LCD *"); lcd_gotoxy(1,2); lcd_string("*abcdefghijklmn*"); } </pre> <pre> //===================================== //== Masteroppgave 2005 == //== av == //== Tor Aleksander Birk Danielsen == //===================================== //-- -- //-- Filnavn: lcd.h -- //-- Dato: 06/06-2005 -- //-- -- //------------------------------------- #include "xgpio_l.h" #include "xutil.h" //------------------------------------- // delay_ms(millisekund); //------------------------------------- // enkel funksjon som generer delay i ms området void delay_ms(int delay_m); //------------------------------------- // lcd_string(); //------------------------------------- // Skriver ut en streng på lcd-skjermen void lcd_string(char *s); //------------------------------------- // lcd_init(); //------------------------------------- // initialiserer et 2x16 lcd display void lcd_init(void); //------------------------------------- // lcd_send_byte(address,data); //------------------------------------- // Sender en byte til lcd displayet // Første variabel er '0' hvis det // registerinfo som sendes, ellers // er den '1' for tegn void lcd_send_byte(int address, Xuint32 data); //------------------------------------- // lcd_send_nibble(data,address); //------------------------------------- //??? ikke i bruk void lcd_send_nibble(int data, int address); //------------------------------------- // lcd_gotoxy(x,y); //------------------------------------- // Gå til et punkt på lcd skjermen void lcd_gotoxy(int x,int y); //------------------------------------- // lcd_putc(c); //------------------------------------- // skriver ut en bokstav på lcd skjerm // spesialtegn: // '\f' // '\n' // '\b' void lcd_putc( char c); //------------------------------------- // lcd_test_msg(); //------------------------------------- // skriver ut en testmelding void lcd_test_msg(void); </pre> === Main fil === Du vil også trenge en main rutine som kjører hovedprogrammet ditt. Denne filen <a href="uploads/main.c">main.c</a> må du også legge inn i samme prosjektkatalog, "...test/TestApp_Memory/src", som de to forrige filene. <pre> //----------------------------------- //-- toturial 2 -- //-- test av lcd-skjerm -- //-- -- //-- Tor Aleksander Birk Danielsen -- //----------------------------------- //-- include headers -- #include "xparameters.h" #include "xgpio_l.h" #include <stdio.h> #include "lcd.h" int main(void) { print("--main_rutine--\n\r"); print("lcd init...."); lcd_init(); //inintialiserer lcd skjerm print("ok\n\r"); print("skriver test msg på lcd\n\r"); lcd_test_msg(); delay_ms(2000); // 2sek delay print("skiver streng på lcd\n\r"); lcd_putc('\f'); //ny skjerm lcd_gotoxy(1,1); //setter markør i øvre venstre hjørne lcd_string("dette virker jo!"); //skriver ut en streng while(1); //stopper programmet her med evig sløyfe } </pre> Du må nå åpne "applications" menyen og åpne prosjektet "TestApp_Memory". Høyreklikk på filen "TestApp_Memory.c" og slett den. Høyreklikk på "source" og velg "add file..". Legg til "lcd.c" og "main.c". Velg "header" og legg til på samme måte "lcd.h". [[Image:EDK_XPS_27.jpg]] Pass på at "#define LCD_module_address 0x40040000" i lcd.c peker til rett adresse. Denne adressen ble automatisk generert tidligere i oppgaven og skal ideelt sett være lik. Gå på "tools" menyen og velg "Build All User Aplications". Du vil nå få kompilert c-koden din. Start så opp hyperterminal med samme innstilinger som forrige gang. Gå på "tools" menyen og velg "downloads". Du vil nå få lastet over prosessor og programkode på fpga'en. På lcd skjermen vil du få opp følgende to meldinger med 2 sek mellomrom: <pre> * Test av LCD * *abcdefghijklmn* </pre> <pre> dette virker jo! </pre> og på hyperterminal vil følgende melding komme opp: <pre> --main_rutine-- lcd init....ok skriver test msg på lcd skiver streng på lcd </pre> [[Category:Mikroelektronikk]] dcb0fc3e8b4d6bbe502f5a121e0c49eb5910932f EDK tutorial 3 0 103 214 2009-03-02T08:19:40Z Nfyku 4 New page: == VHDL design i ISE 7.1 for virtex-4 == En enkel steg-for-steg veiledning til implementasjon av en RS232 transmitter på en virtex-4 FPGA Dette er en kort introduksjon til Xilinx ISE og... wikitext text/x-wiki == VHDL design i ISE 7.1 for virtex-4 == En enkel steg-for-steg veiledning til implementasjon av en RS232 transmitter på en virtex-4 FPGA Dette er en kort introduksjon til Xilinx ISE og vhdl design i EDK. Vi tar utgangspunkt i det samme prototypekortet (DS-BD-V4LX25MB) som i turtorail 1 og 2. Målet er å lage en enkelt RS232 transmitter som sender koden på DIP-bryterene til en terminal på PC'en. Du vil trenge hyperterminal eller et annet tilsvarende program til å lese COM porten på PC'en. === Lage nytt prosjekt === Start programmet "Project Navigator" under "Xilinx ISE 7.1i" menyen. Når du starter opp vil forrige prosjekt automatisk ligge der hvist noen har brukt ISE før deg. I tilfelle så lukker du prosjektet ved å velge "Close Project" under "File" menyen. Fra "file" menyen velger du så "New Project". Du vil nå få opp et vindu hvor du kan navngi prosjektet og velge plasering. Kall prosjektet "RS232" og finn en passende plasering for prosjektkatalogen. "Top Level Module Type" setter du til VHD. Trykk så "Next" [[Image:EDK_XPS_30.jpg]] Du vil nå få opp et vindu hvor du kan velge hviken FPGA du vil bruke, samt vertøyvalg. Sett "Device Family" til Virtex4, "Device" til "xc4vlx25", "Package" til "ff668" og "Speed Grade til -10". "Synthesis Tool" settes til "XST", "Simulator" til "ISE simulator" og simuleringsspråk settes til VHDL. Trykk så "Next". [[Image:EDK_XPS_31.jpg]] Du vil nå få opp ett vindu hvor du har muligheten til å få generert en kildefil til prosjektet. Trykk på "New Source". [[Image:EDK_XPS_32.jpg]] Velg "VHDL Module" og gi den navnet "RS232_main". Pass på at boksen "Add to Project" er merket og trykk "Next". [[Image:EDK_XPS_33.jpg]] Du kan nå legge til porter. Legg inn portene; clk, reset og send som "in". Legg til data som "in" og sett MSB til 7 og LSB til 0. Legg til port tx og opptatt som "out". Trykk så "Next". [[Image:EDK_XPS_34.jpg]] Du får nå opp et vindu med et samendrag av kildefilen din. Trykk "Finish". Du kommer nå tilbake til vinduet hvor du kan legge til kildefiler. Trykk "Next". Neste vindu lar deg legge til ferdige kilderfiler. Ta filene [[Media:rs232_clk.vhd">rs232_clk.vhd</a> og [[Media:rs232_tx.vhd">rs232_tx.vhd</a> og last dem ned på maskinen din. <pre> --------------------------------- --Tor Aleksander Birk Danielsen-- -- klokke til RS232 -- -- 10.04.2005 -- --------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity rs232_clk is port( clk : in std_logic; --main clk 100MHz reset : in std_logic; --global reset clk_tx : inout std_logic; --sendeklokke 16*baudrate bit_send : out std_logic); --pulstog 1*baudrate end rs232_clk; architecture Behavioral of rs232_clk is --interne tellere signal clk_teller_1 : std_logic_vector(0 to 8); signal clk_teller_2 : std_logic_vector(0 to 3); begin --------------------------------------- --lage klokkefrekvens på 16xbaudraten-- -- clk/(budrate*16) = tellerverdi*2-- -- 100MHz/(9600*32) = 325 = 101000101-- --------------------------------------- process (clk) begin if clk'event and clk='1' then if reset = '1' then clk_teller_1 <= clk_teller_1 + 1; if clk_teller_1 = "101000101" then clk_tx <= not clk_tx; clk_teller_1 <= "000000000"; end if; else clk_teller_1 <= "000000000"; end if; end if; end process; --------------------------------------- --lage 1/16 puls av clk_tx til sender-- -- dvs pulstog med samme frekvens -- -- som baudraten -- --------------------------------------- process (reset, clk_tx) begin if reset = '0' then bit_send <= '0'; clk_teller_2 <= "0000"; elsif rising_edge(clk_tx) then clk_teller_2 <= clk_teller_2 + 1; if clk_teller_2 = "1111" then bit_send <= '1'; elsif clk_teller_2 = "0000" then bit_send <= '0'; end if; end if; end process; end Behavioral; </pre> <pre> --------------------------------- --Tor Aleksander Birk Danielsen-- -- sender RS232 -- -- 10.04.2005 -- --------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity rs232_tx is port( clk_tx : in std_logic; --clk 16 * baudrateklokke reset : in std_logic; --global reset bit_send : in std_logic; --pulstog 1*baudrate send : in std_logic; --starter transmitt data : in std_logic_vector(7 downto 0); --data som skal sendes tx : out std_logic; --transmittpinne opptatt : out std_logic); --sender opptatt signal end rs232_tx; architecture Behavioral of rs232_tx is type tilstander is (idle, start_sending, sender, stop_send); signal sende_data : tilstander := idle; signal transmitt_buffer : std_logic_vector(9 downto 0); --transmitt buffer (10 bit) signal transmitt_data : std_logic_vector(7 downto 0); --inneholder databyte som skal sendes signal bit_teller: integer := 9; begin ------------------------- --senderutine for rs232-- ------------------------- sender_rs232: process (reset, clk_tx) begin if reset='0' then opptatt <= '0'; sende_data <= idle; transmitt_buffer <= (others=> '1'); elsif rising_edge(clk_tx) then case sende_data is when idle => if send = '0' then transmitt_data <= data; opptatt <= '1'; sende_data <= start_sending; else opptatt <= '0'; end if; when start_sending => if bit_send = '1' then sende_data <= sender; bit_teller <= 9; transmitt_buffer <= '1' & transmitt_data & '0'; end if; when sender => if bit_send = '1' then bit_teller <= bit_teller - 1; transmitt_buffer <= '1' & transmitt_buffer(transmitt_buffer'high downto 1); if bit_teller = 1 then sende_data <= stop_send; end if; end if; when stop_send => if bit_send = '1' then sende_data <= idle; end if; When others => sende_data <= idle; end case; end if; end process; tx <= transmitt_buffer(0); end Behavioral; </pre> Trykk så "Add Source" og legg begge filene til prosjektet. På spørsmål om filtype velg "VHDL design file". Trykk så "Next". [[Image:EDK_XPS_35.jpg]] Du vil nå få opp et sammendrag av prosjektet ditt. Trykk "Finish" og prosjektet vil bli generert. === Lage koden === Vi har nå en main fil samt en fil med klokkekode og en fil med transisjonskode. Neste steg bli å inkludere klokken og senderen i hovedfilene vår. Dobbeltklikk på filen "RS232_main.vhd" under "Module View" for å åpne filen for editering. Legg til følgende kodebit mellom "architecture .." og "begin": <pre> --legger til komponenter component rs232_clk port ( clk : in std_logic; reset : in std_logic; clk_tx : out std_logic; bit_send : out std_logic); end component; component rs232_tx port ( clk_tx : in std_logic; reset : in std_logic; bit_send : in std_logic; send : in std_logic; data : in std_logic_vector(7 downto 0); tx : out std_logic; opptatt : out std_logic); end component; --definere interne signaler signal bit_send : std_logic; signal clk_tx : std_logic; </pre> Etter begin legges følgende kodebit inn: <pre> -- kobler klokke og tx signaler til rs232_main entity sig. klokke_gen: rs232_clk port map( clk, reset, clk_tx, bit_send); transmitt: rs232_tx port map( clk_tx, reset, bit_send, send, data, tx, opptatt); </pre> Filen [[Media:RS232_main.vhd]] kan lastes ned ferdig hvis du er usikker på om du har lagt inn koden korrekt. Når du er ferdig med å redigere main filen tar du å lagrer prosjektet. Neste steg blir å test om koden er korekt. I "prosess View" vinduet går du til "Design Utilities" og dobbelklikker på "Check Syntax for Simulation". Har du gjort alt korekt skal du ikke få noen feilmelding nå. I "Module view" kan du også se at RS232_clk og RS232_tx har blitt underordnet RS232_main. === Legge til pinner === Neste steg er å legge til "user constraints" som i vårt tilfelle betyr å definere hvilke pinner som skal til hviken port. I "Module View" menyen markerer du filen RS232_main.vhd da det er denne filen du ønsker å legge "User Constraints" til. Når filen er markert går du til "Prosess View" vinduet og velger "User Constraints" menyen. Dobbeltklikk på "Assign Package Pins". Du vil nå få spørsmål om du vil legge til en UCF fil til prosjektet. Trykk "Yes". Du får nå opp et nytt vindu. I "Design Object List" vinduet har du en oversikt over alle IO porter i prosjektet ditt. Vi skal nå legge inn pinnr i "Loc" til hver av portene. Legg til følgene: [[Image:EDK_XPS_36.jpg]] Når du er ferdig lagrer du og avslutter hele 2Xilinx Pace" vinduet. Du har nå fått generert en UCF fil til prosjektet ditt som inneholder følgende: <pre> #PACE: Start of Constraints generated by PACE #PACE: Start of PACE I/O Pin Assignments NET "clk" LOC = "B13" ; NET "data<0>" LOC = "AD11" ; NET "data<1>" LOC = "AC12" ; NET "data<2>" LOC = "AC13" ; NET "data<3>" LOC = "AD13" ; NET "data<4>" LOC = "AC14" ; NET "data<5>" LOC = "AD14" ; NET "data<6>" LOC = "AC15" ; NET "data<7>" LOC = "AB7" ; NET "opptatt" LOC = "AE9" ; NET "reset" LOC = "AB9" ; NET "send" LOC = "AA11" ; NET "tx" LOC = "T7" ; #PACE: Start of PACE Area Constraints #PACE: Start of PACE Prohibit Constraints #PACE: End of Constraints generated by PACE </pre> === Sythesisering og Implementering === Neste steg blir å Synthesiserer og implementere deisgnet vårt. Marker igjen filen RS232_main.vhd i "Module View" vinduet og dobbeltklikk på "Genreate Programming File" i "Process View". Du vil nå få generert en bit fil som kan lastes over i FPGA'en. === Programering og testing === Vi skal nå programmere FPGA'en. Sørg for at det er strøm på kortet og at programmeringsadapterert er koblet til. Start også hyperterminal med med en baudrate på 9600kbps. Gå til "Process View" og dobeltklikk på "Configure Device(iMPACT). Du åpner nå iMPACT programmet. På spørsmålom konfigurerig velg "Boundary-Scan mode". I neste vindu velger du automatisk tilkobling. Trykk så "Finish". iMPACT vil nå automatisk sjekke hvor mange og hvilke type FPGA'er som er koblet til programmeringsadapterert. Du vil få et vindu som sier at en enhet er funnet. Trykk "Ok". Du får nå opp et vindu der du blir bedt om å tilordne en new configureringsfil. Velg filen rs232_main.bit. Du får nå opp en advarsel. Ignorer denne og trykk "Ok". Høyreklikk på bildet av Virtex4 og velg "porgram...". Trykk så "Ok". Du vil nå programere FPGA'en. [[Image:EDK_XPS_37.jpg]] Hvis du nå trykker "Push2" bryteren vil du få bittmønsteret til DIP-bryterene oversendt til hyperterminal som ASCII kode. Du har nå suksessfult laget og implementert VHDL kode med ISE. [[Category:Mikroelektronikk]] f3ed7b8daea31380399025ed0246f1a294a78ac7 215 2009-03-02T08:20:31Z Nfyku 4 wikitext text/x-wiki == VHDL design i ISE 7.1 for virtex-4 == En enkel steg-for-steg veiledning til implementasjon av en RS232 transmitter på en virtex-4 FPGA Dette er en kort introduksjon til Xilinx ISE og vhdl design i EDK. Vi tar utgangspunkt i det samme prototypekortet (DS-BD-V4LX25MB) som i turtorail 1 og 2. Målet er å lage en enkelt RS232 transmitter som sender koden på DIP-bryterene til en terminal på PC'en. Du vil trenge hyperterminal eller et annet tilsvarende program til å lese COM porten på PC'en. === Lage nytt prosjekt === Start programmet "Project Navigator" under "Xilinx ISE 7.1i" menyen. Når du starter opp vil forrige prosjekt automatisk ligge der hvist noen har brukt ISE før deg. I tilfelle så lukker du prosjektet ved å velge "Close Project" under "File" menyen. Fra "file" menyen velger du så "New Project". Du vil nå få opp et vindu hvor du kan navngi prosjektet og velge plasering. Kall prosjektet "RS232" og finn en passende plasering for prosjektkatalogen. "Top Level Module Type" setter du til VHD. Trykk så "Next" [[Image:EDK_XPS_30.jpg]] Du vil nå få opp et vindu hvor du kan velge hviken FPGA du vil bruke, samt vertøyvalg. Sett "Device Family" til Virtex4, "Device" til "xc4vlx25", "Package" til "ff668" og "Speed Grade til -10". "Synthesis Tool" settes til "XST", "Simulator" til "ISE simulator" og simuleringsspråk settes til VHDL. Trykk så "Next". [[Image:EDK_XPS_31.jpg]] Du vil nå få opp ett vindu hvor du har muligheten til å få generert en kildefil til prosjektet. Trykk på "New Source". [[Image:EDK_XPS_32.jpg]] Velg "VHDL Module" og gi den navnet "RS232_main". Pass på at boksen "Add to Project" er merket og trykk "Next". [[Image:EDK_XPS_33.jpg]] Du kan nå legge til porter. Legg inn portene; clk, reset og send som "in". Legg til data som "in" og sett MSB til 7 og LSB til 0. Legg til port tx og opptatt som "out". Trykk så "Next". [[Image:EDK_XPS_34.jpg]] Du får nå opp et vindu med et samendrag av kildefilen din. Trykk "Finish". Du kommer nå tilbake til vinduet hvor du kan legge til kildefiler. Trykk "Next". Neste vindu lar deg legge til ferdige kilderfiler. Ta filene [[Media:rs232_clk.vhd">rs232_clk.vhd</a> og [[Media:rs232_tx.vhd">rs232_tx.vhd</a> og last dem ned på maskinen din. <pre> --------------------------------- --Tor Aleksander Birk Danielsen-- -- klokke til RS232 -- -- 10.04.2005 -- --------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity rs232_clk is port( clk : in std_logic; --main clk 100MHz reset : in std_logic; --global reset clk_tx : inout std_logic; --sendeklokke 16*baudrate bit_send : out std_logic); --pulstog 1*baudrate end rs232_clk; architecture Behavioral of rs232_clk is --interne tellere signal clk_teller_1 : std_logic_vector(0 to 8); signal clk_teller_2 : std_logic_vector(0 to 3); begin --------------------------------------- --lage klokkefrekvens på 16xbaudraten-- -- clk/(budrate*16) = tellerverdi*2-- -- 100MHz/(9600*32) = 325 = 101000101-- --------------------------------------- process (clk) begin if clk'event and clk='1' then if reset = '1' then clk_teller_1 <= clk_teller_1 + 1; if clk_teller_1 = "101000101" then clk_tx <= not clk_tx; clk_teller_1 <= "000000000"; end if; else clk_teller_1 <= "000000000"; end if; end if; end process; --------------------------------------- --lage 1/16 puls av clk_tx til sender-- -- dvs pulstog med samme frekvens -- -- som baudraten -- --------------------------------------- process (reset, clk_tx) begin if reset = '0' then bit_send <= '0'; clk_teller_2 <= "0000"; elsif rising_edge(clk_tx) then clk_teller_2 <= clk_teller_2 + 1; if clk_teller_2 = "1111" then bit_send <= '1'; elsif clk_teller_2 = "0000" then bit_send <= '0'; end if; end if; end process; end Behavioral; </pre> <pre> --------------------------------- --Tor Aleksander Birk Danielsen-- -- sender RS232 -- -- 10.04.2005 -- --------------------------------- library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity rs232_tx is port( clk_tx : in std_logic; --clk 16 * baudrateklokke reset : in std_logic; --global reset bit_send : in std_logic; --pulstog 1*baudrate send : in std_logic; --starter transmitt data : in std_logic_vector(7 downto 0); --data som skal sendes tx : out std_logic; --transmittpinne opptatt : out std_logic); --sender opptatt signal end rs232_tx; architecture Behavioral of rs232_tx is type tilstander is (idle, start_sending, sender, stop_send); signal sende_data : tilstander := idle; signal transmitt_buffer : std_logic_vector(9 downto 0); --transmitt buffer (10 bit) signal transmitt_data : std_logic_vector(7 downto 0); --inneholder databyte som skal sendes signal bit_teller: integer := 9; begin ------------------------- --senderutine for rs232-- ------------------------- sender_rs232: process (reset, clk_tx) begin if reset='0' then opptatt <= '0'; sende_data <= idle; transmitt_buffer <= (others=> '1'); elsif rising_edge(clk_tx) then case sende_data is when idle => if send = '0' then transmitt_data <= data; opptatt <= '1'; sende_data <= start_sending; else opptatt <= '0'; end if; when start_sending => if bit_send = '1' then sende_data <= sender; bit_teller <= 9; transmitt_buffer <= '1' & transmitt_data & '0'; end if; when sender => if bit_send = '1' then bit_teller <= bit_teller - 1; transmitt_buffer <= '1' & transmitt_buffer(transmitt_buffer'high downto 1); if bit_teller = 1 then sende_data <= stop_send; end if; end if; when stop_send => if bit_send = '1' then sende_data <= idle; end if; When others => sende_data <= idle; end case; end if; end process; tx <= transmitt_buffer(0); end Behavioral; </pre> Trykk så "Add Source" og legg begge filene til prosjektet. På spørsmål om filtype velg "VHDL design file". Trykk så "Next". [[Image:EDK_XPS_35.jpg]] Du vil nå få opp et sammendrag av prosjektet ditt. Trykk "Finish" og prosjektet vil bli generert. === Lage koden === Vi har nå en main fil samt en fil med klokkekode og en fil med transisjonskode. Neste steg bli å inkludere klokken og senderen i hovedfilene vår. Dobbeltklikk på filen "RS232_main.vhd" under "Module View" for å åpne filen for editering. Legg til følgende kodebit mellom "architecture .." og "begin": <pre> --legger til komponenter component rs232_clk port ( clk : in std_logic; reset : in std_logic; clk_tx : out std_logic; bit_send : out std_logic); end component; component rs232_tx port ( clk_tx : in std_logic; reset : in std_logic; bit_send : in std_logic; send : in std_logic; data : in std_logic_vector(7 downto 0); tx : out std_logic; opptatt : out std_logic); end component; --definere interne signaler signal bit_send : std_logic; signal clk_tx : std_logic; </pre> Etter begin legges følgende kodebit inn: <pre> -- kobler klokke og tx signaler til rs232_main entity sig. klokke_gen: rs232_clk port map( clk, reset, clk_tx, bit_send); transmitt: rs232_tx port map( clk_tx, reset, bit_send, send, data, tx, opptatt); </pre> Filen [[Media:RS232_main.vhd]] kan lastes ned ferdig hvis du er usikker på om du har lagt inn koden korrekt. Når du er ferdig med å redigere main filen tar du å lagrer prosjektet. Neste steg blir å test om koden er korekt. I "prosess View" vinduet går du til "Design Utilities" og dobbelklikker på "Check Syntax for Simulation". Har du gjort alt korekt skal du ikke få noen feilmelding nå. I "Module view" kan du også se at RS232_clk og RS232_tx har blitt underordnet RS232_main. === Legge til pinner === Neste steg er å legge til "user constraints" som i vårt tilfelle betyr å definere hvilke pinner som skal til hviken port. I "Module View" menyen markerer du filen RS232_main.vhd da det er denne filen du ønsker å legge "User Constraints" til. Når filen er markert går du til "Prosess View" vinduet og velger "User Constraints" menyen. Dobbeltklikk på "Assign Package Pins". Du vil nå få spørsmål om du vil legge til en UCF fil til prosjektet. Trykk "Yes". Du får nå opp et nytt vindu. I "Design Object List" vinduet har du en oversikt over alle IO porter i prosjektet ditt. Vi skal nå legge inn pinnr i "Loc" til hver av portene. Legg til følgene: [[Image:EDK_XPS_36.jpg]] Når du er ferdig lagrer du og avslutter hele 2Xilinx Pace" vinduet. Du har nå fått generert en UCF fil til prosjektet ditt som inneholder følgende: <pre> #PACE: Start of Constraints generated by PACE #PACE: Start of PACE I/O Pin Assignments NET "clk" LOC = "B13" ; NET "data<0>" LOC = "AD11" ; NET "data<1>" LOC = "AC12" ; NET "data<2>" LOC = "AC13" ; NET "data<3>" LOC = "AD13" ; NET "data<4>" LOC = "AC14" ; NET "data<5>" LOC = "AD14" ; NET "data<6>" LOC = "AC15" ; NET "data<7>" LOC = "AB7" ; NET "opptatt" LOC = "AE9" ; NET "reset" LOC = "AB9" ; NET "send" LOC = "AA11" ; NET "tx" LOC = "T7" ; #PACE: Start of PACE Area Constraints #PACE: Start of PACE Prohibit Constraints #PACE: End of Constraints generated by PACE </pre> === Sythesisering og Implementering === Neste steg blir å Synthesiserer og implementere deisgnet vårt. Marker igjen filen RS232_main.vhd i "Module View" vinduet og dobbeltklikk på "Genreate Programming File" i "Process View". Du vil nå få generert en bit fil som kan lastes over i FPGA'en. === Programmering og testing === Vi skal nå programmere FPGA'en. Sørg for at det er strøm på kortet og at programmeringsadapterert er koblet til. Start også hyperterminal med med en baudrate på 9600kbps. Gå til "Process View" og dobeltklikk på "Configure Device(iMPACT). Du åpner nå iMPACT programmet. På spørsmålom konfigurerig velg "Boundary-Scan mode". I neste vindu velger du automatisk tilkobling. Trykk så "Finish". iMPACT vil nå automatisk sjekke hvor mange og hvilke type FPGA'er som er koblet til programmeringsadapterert. Du vil få et vindu som sier at en enhet er funnet. Trykk "Ok". Du får nå opp et vindu der du blir bedt om å tilordne en new configureringsfil. Velg filen rs232_main.bit. Du får nå opp en advarsel. Ignorer denne og trykk "Ok". Høyreklikk på bildet av Virtex4 og velg "porgram...". Trykk så "Ok". Du vil nå programere FPGA'en. [[Image:EDK_XPS_37.jpg]] Hvis du nå trykker "Push2" bryteren vil du få bittmønsteret til DIP-bryterene oversendt til hyperterminal som ASCII kode. Du har nå suksessfult laget og implementert VHDL kode med ISE. [[Category:Mikroelektronikk]] cd07c1bb0a51ffafacfffd3b749e14900d2bdde6 FLTK GUI 0 104 216 2009-03-02T08:24:36Z Nfyku 4 New page: == Simple FLTK tutorial using Bloodshed Dev-C++ with MinGw == === Download Software === Get the latest version of Bloodshed Dev-C++ with Mingw/GCC from (~9 MB):<br/> http://www.bloodshed.... wikitext text/x-wiki == Simple FLTK tutorial using Bloodshed Dev-C++ with MinGw == === Download Software === Get the latest version of Bloodshed Dev-C++ with Mingw/GCC from (~9 MB):<br/> http://www.bloodshed.net/dev/devcpp.html<br/> or v-4.9.9.2 directly from:<br/> http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe<br/> Install in an appropriate place. After starting the program the first thing you need to do is to download the FLTK library. Go to “Tools->Check for updates / packages”. [[Image:webupdata.bmp]] Select devpak server “devpaks.org Community Devpaks” click “Check for updates” and check the fltk version 1.1.7 and click “Download selected” and continue with the installation of the library. 1.1.7 is a stable version of the FLTK library. FLTK2 is still a beta release. === Start a new FLTK project === Start Bloodshed Dev-C++ and start a new project “File->new-> project”. Choose “Empty Project” and give the project a name. [[Image:newproject.bmp]] Add a new source file to the project “File->new->Source File”. Save file as main.cpp. In order to setup the FLTK library for the project go to “Project->Project options” and add the following under the Parameters tab: <pre> Compiler: -DWIN32 -mms-bitfields Linker: -lfltk -lole32 -luuid -lcomctl32 -lwsock32 –lm </pre> [[Image:project_options.bmp]] Under the General tab choose Win32 GUI. [[Image:project_options2.bmp]] === The quick way of creating a FLTK project === “File->new-> project” and choose GUI and FLTK. This will automatically set up the linking and compiler setttings. [[Image:newproject2.bmp]] === Develop code === Create a new source file and write the following code: <pre> #include !<FL/Fl.H> #include \<FL/Fl_Window.H> int main (int argc , int **argv) { Fl_Window win(400,200,"Test"); //win(width, height,name) win.show(); // show window return(Fl::run()); //fltk application loop } </pre> Save and press F9 (Compile & Run) and a simple window will be created. [[Image:simplewindow.JPG]] ===Create a simple window with a button=== <pre> #include <FL/Fl.H> #include <FL/Fl_Window.H> #include <FL/Fl_Button.H> void but_cb(Fl_Widget* w, void*){ Fl_Button *b= (Fl_Button*)w; if (b->label() == "Off") { b->label("On"); }else{ b->label("Off"); } } int main (int argc , int **argv) { Fl_Window win(400,200,"Test"); //win(width, height,name) Fl_Button but(100,50,70,30,"On"); win.show(); // show window but.callback(but_cb); return(Fl::run()); //fltk application loop } </pre> [[Image:windowwithbutton.jpg]] [[Category:Mikroelektronikk]] 924e0383b30dffa72125e44acd946f5e84e457f4 Tutorials 0 105 217 2009-03-02T08:27:23Z Nfyku 4 New page: [[http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow]] [[http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial]] ... wikitext text/x-wiki [[http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow]] [[http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial]] [[http://pages.cs.wisc.edu/~david/courses/cs755/cs755/ VLSI System Design course with tutorials]] [[Category:Mikroelektronikk]] 1b2ff6c56923e8b7565adb9dc16c2c86af6f5646 Microelectronics group 0 25 218 2009-03-02T08:35:04Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System [[Category:Mikroelektronikk]] 5f4bca04dde5fe8d27839fc575d591b1ff07ac93 User:Hsa061 2 106 219 2009-03-03T06:47:46Z Dfe002 7 New page: This is the personal page from Dag Toppe Larsen. wikitext text/x-wiki This is the personal page from Dag Toppe Larsen. 0eedac7417a9f7e5bb5ae9e6feecba893f7914ad 220 2009-03-03T06:48:00Z Dfe002 7 wikitext text/x-wiki This is the personal page from Heidi Sandaker a24481dcb873bc165eba3e8a30d48e7b6934196f User:Tbu082 2 107 221 2009-03-03T06:48:59Z Dfe002 7 New page: This is the personal page from Thomas Burgess. wikitext text/x-wiki This is the personal page from Thomas Burgess. 7e03fa04d6d5a0344a8868017243b8566a9288e0 User:Nfylj 2 108 222 2009-03-03T06:51:23Z Dfe002 7 New page: This is the personal page from Lars Gimmestad Johansen. wikitext text/x-wiki This is the personal page from Lars Gimmestad Johansen. 60a959d940c14f7e1aa81091702798b4c61c4202 User:Nfydr 2 109 223 2009-03-03T10:48:54Z Dfe002 7 New page: This is the personal page from Dieter Röhrich. wikitext text/x-wiki This is the personal page from Dieter Röhrich. d38d47b118ddda1a9701aec12a717662ad14ef6d User talk:St12361 3 110 224 2009-03-03T12:31:49Z St12361 17 New page: === RS 232-Setting === Baud Rate: 9600 Parity: None Data Bits: 8 Stop Bits: 1 Flow Control: None wikitext text/x-wiki === RS 232-Setting === Baud Rate: 9600 Parity: None Data Bits: 8 Stop Bits: 1 Flow Control: None 181c226a5d0da57f3336714f7dd70398c19b595b Lab Equipment 0 111 227 2009-03-03T13:21:22Z St12361 17 New page: {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG... wikitext text/x-wiki {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} e2c5438906198c150a3b6fc5e34fc0ee7b4f5638 229 2009-03-04T07:14:47Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |[[http://www.farnell.com/datasheets/84674.pdf DataSheet]] |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2718 |VME bridge | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME bridge | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} 4e3935a9ebce06769ecee3b1890a3027fdeaa549 230 2009-03-04T07:29:41Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |[[http://www.farnell.com/datasheets/84674.pdf DataSheet]] |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} f29302232c85f5def62efe3bf6df7ebb55996d1f CAEN 40CH HV PSU 0 112 228 2009-03-03T14:00:07Z St12361 17 New page: This how to is based on using the functionality of the custome Labview VI's. Refer to the User Manual for using the Terminal interface of the unit. === RS 232-Setting === Baud Rate: ... wikitext text/x-wiki This how to is based on using the functionality of the custome Labview VI's. Refer to the User Manual for using the Terminal interface of the unit. === RS 232-Setting === Baud Rate: 9600 Parity: None Data Bits: 8 Stop Bits: 1 Flow Control: None a7681f5e82fed2d69b0dd57544371f1d5663616a 232 2009-03-06T13:26:09Z St12361 17 wikitext text/x-wiki This how to is based on using the functionality of the custome Labview VI's. Refer to the User Manual for using the Terminal interface of the unit. === RS 232-Setting === Baud Rate: 9600 Parity: None Data Bits: 8 Stop Bits: 1 Flow Control: None Kladd min. write time between commands: 60ms (30 ms worst case) Bytes recieved (From top Menu @ 9600 bauds) "1": 256 bytes (220 ms) "1+b": 170 bytes (150 ms) "1+b+a": 273 bytes (230 ms) "1+b+a+n": 272 bytes (230 ms) "1+b+a+c/i/j..": 14 bytes (15 ms) "1+b+a+c/i/j..+X": 1 bytes (1 ms) "1+b+a+c/i/j..+X+/r/n": 272 bytes (230 ms) cdd31d9c691b1062d877edb4c06972b9b3cd75ba User:Her065 2 113 231 2009-03-04T07:32:37Z Dfe002 7 New page: This is the personal page from Hege Austrheim Erdal. wikitext text/x-wiki This is the personal page from Hege Austrheim Erdal. d2b031b21ccdf3f0e85831d1c0e4ec2f057dd373 User:Asa022 2 114 233 2009-03-09T07:06:33Z Dfe002 7 New page: This is the personal page from Andreas Tefre Samnøy. wikitext text/x-wiki This is the personal page from Andreas Tefre Samnøy. 8817e836fe66fe70dc4c606cfbed3b64024c77b6 3D Detector Activities 0 23 234 2009-03-09T07:29:00Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... [[Category:Detector lab]] babd559a9f26285760448a394db687e6fae14d36 Frequently asked questions FAQ 0 115 235 2009-03-09T07:51:22Z Dfe002 7 New page: ==How to set up a general 3D system== ===General overview=== As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the da... wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. Figure I.2 : Device Manager Window ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. Figure I.3 : VME-MXI-2 Controller board (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. Figure I.4 : Turbo pixel low level board To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager Figure I.5 : MAX screenshot of how to start Resman figure I.6 : Tree configuration After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device” (cf Figure I.7). A new window appears and by following the steps the device is installed. Figure I.7 : How to create a new VME device The first step is to choose the pseudo logical address to “256” (cf Figure I.8.a). The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device (cf Figure I.8.b). For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. (a) (b) Figure I.8 How to enter the parameters for a new VME device At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. Figure I.9 : Final tree architecture We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) ===I.5. TPCC board=== Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Figure I.10 : TPCC board Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot (cf Figure I.12). Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. Figure I.12 : Bump bonded The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. Figure I.13 : Front End electronic board We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== Figure II.1 : TurboDAQ main panel To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. On Figure II.1 we observe the TurboDAQ main panel. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. (cf Figure II.2) If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. == 6f775d8184928171263c691b817333482a4b3ee8 236 2009-03-09T08:31:13Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. Figure I.2 : Device Manager Window ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. Figure I.3 : VME-MXI-2 Controller board (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. Figure I.4 : Turbo pixel low level board To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager Figure I.5 : MAX screenshot of how to start Resman figure I.6 : Tree configuration After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device” (cf Figure I.7). A new window appears and by following the steps the device is installed. Figure I.7 : How to create a new VME device The first step is to choose the pseudo logical address to “256” (cf Figure I.8.a). The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device (cf Figure I.8.b). For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. (a) (b) Figure I.8 How to enter the parameters for a new VME device At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. Figure I.9 : Final tree architecture We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) ===I.5. TPCC board=== Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Figure I.10 : TPCC board Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot (cf Figure I.12). Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. Figure I.12 : Bump bonded The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. Figure I.13 : Front End electronic board We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== Figure II.1 : TurboDAQ main panel To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. On Figure II.1 we observe the TurboDAQ main panel. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. (cf Figure II.2) If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. 857c13eb291a45875223c1bcdf7b2c9e081d40d5 237 2009-03-09T08:32:15Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. Figure I.2 : Device Manager Window ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. Figure I.3 : VME-MXI-2 Controller board (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. Figure I.4 : Turbo pixel low level board To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager Figure I.5 : MAX screenshot of how to start Resman figure I.6 : Tree configuration After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device” (cf Figure I.7). A new window appears and by following the steps the device is installed. Figure I.7 : How to create a new VME device The first step is to choose the pseudo logical address to “256” (cf Figure I.8.a). The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device (cf Figure I.8.b). For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. (a) (b) Figure I.8 How to enter the parameters for a new VME device At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. Figure I.9 : Final tree architecture We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) ===I.5. TPCC board=== Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Figure I.10 : TPCC board Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot (cf Figure I.12). Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. Figure I.12 : Bump bonded The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. Figure I.13 : Front End electronic board We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== Figure II.1 : TurboDAQ main panel To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. On Figure II.1 we observe the TurboDAQ main panel. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. (cf Figure II.2) If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. ff10facc9b4a31b3a33b75028069d1ed81125e09 File:3D createnewvmedevice.JPG 6 116 238 2009-03-09T09:18:29Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D devicemanagerwindow.JPG 6 117 239 2009-03-09T09:18:39Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D entervmeparameters1.JPG 6 118 240 2009-03-09T09:18:47Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D entervmeparameters2.JPG 6 119 241 2009-03-09T09:18:53Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D fepower.JPG 6 120 242 2009-03-09T09:18:59Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D finalvmestructure.JPG 6 121 243 2009-03-09T09:19:10Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D overview.JPG 6 122 244 2009-03-09T09:19:18Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D startingresman.JPG 6 123 245 2009-03-09T09:19:26Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D tpccboard.JPG 6 124 246 2009-03-09T09:19:38Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D treeconfiguration.JPG 6 125 247 2009-03-09T09:19:46Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D turbodaq configuration.JPG 6 126 248 2009-03-09T09:19:53Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D turbodaq datacontrol.JPG 6 127 249 2009-03-09T09:20:00Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D turbodaq datafitting.JPG 6 128 250 2009-03-09T09:20:07Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D turbodaq initialisation.JPG 6 129 251 2009-03-09T09:20:15Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D turbodaq onlineplot.JPG 6 130 252 2009-03-09T09:20:22Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D turbodaq scancontrol.JPG 6 131 253 2009-03-09T09:20:29Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Frequently asked questions FAQ 0 115 254 2009-03-09T09:51:53Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== <center>[[Image:3D_overview.JPG|frame|200px|Overview]]</center> As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device” (cf Figure I.7). A new window appears and by following the steps the device is installed. <gallery> File:3D_createnewvmedevice.JPG File:3D_entervmeparameters1.JPG File:3D_entervmeparameters2.JPG </gallery> The first step is to choose the pseudo logical address to “256” (cf Figure I.8.a). The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device (cf Figure I.8.b). For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. (a) (b) Figure I.8 How to enter the parameters for a new VME device At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. Figure I.9 : Final tree architecture We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) ===I.5. TPCC board=== Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Figure I.10 : TPCC board Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot (cf Figure I.12). Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. Figure I.12 : Bump bonded The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. Figure I.13 : Front End electronic board We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== Figure II.1 : TurboDAQ main panel To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. On Figure II.1 we observe the TurboDAQ main panel. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. (cf Figure II.2) If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. 08e2ba7a81ea15207673d0f3985c0d872f18aec3 255 2009-03-09T10:17:03Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== <center>[[Image:3D_overview.JPG|frame|200px|Overview]]</center> As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. Figure I.9 : Final tree architecture We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) ===I.5. TPCC board=== Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Figure I.10 : TPCC board Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot (cf Figure I.12). Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. Figure I.12 : Bump bonded The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. Figure I.13 : Front End electronic board We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== Figure II.1 : TurboDAQ main panel To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. On Figure II.1 we observe the TurboDAQ main panel. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. (cf Figure II.2) If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. a2778bd3a4d0148f0e0aee84afefac3c741da0f9 256 2009-03-09T10:38:12Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== <center>[[Image:3D_overview.JPG|frame|200px|Overview]]</center> As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) <center>[[Image:3D_finalvmestructure.JPG|frame|200px|Final VME structure]]</center> ===I.5. TPCC board=== [[Image:3D_tpccboard.JPG|thumb|right|250px|Turbo Pixel Control Card]] Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot (cf Figure I.12). Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. Figure I.12 : Bump bonded The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. Figure I.13 : Front End electronic board We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== Figure II.1 : TurboDAQ main panel To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. On Figure II.1 we observe the TurboDAQ main panel. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. (cf Figure II.2) If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. 8b7756c2cd9862e5afaed9495a39b759d31e12ff 258 2009-03-09T12:30:11Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== <center>[[Image:3D_overview.JPG|frame|200px|Overview]]</center> As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) <center>[[Image:3D_finalvmestructure.JPG|frame|200px|Final VME structure]]</center> ===TPCC board=== [[Image:3D_tpccboard.JPG|thumb|right|250px|Turbo Pixel Control Card]] Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot. Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. The TurboDAQ main panel comes up. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. <gallery caption='TurboDAQ screenshots'> Image:3D_turbodaq_initialisation.JPG|Initialisation panel Image:3D_turbodaq_configuration.JPG|Configuration panel Image:3D_turbodaq_datacontrol.JPG|Control panel Image:3D_turbodaq_datafitting.JPG|Datafitting panel Image:3D_turbodaq_scancontrol.JPG|Scancontrol panel Image:3D_turbodaq_onlineplot.JPG|Onlineplot panel </gallery> ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==3D sensor types== [[Image:3D_sensortypes.JPG|thumb|center|400px|Different types of 3D sensors]] ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. 2b0fdd20b77b0d5f4a9889b1c64595220c8da27b 259 2009-03-09T12:31:21Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== [[Image:3D_overview.JPG|noframe|400px|center|Overview]] As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) <center>[[Image:3D_finalvmestructure.JPG|frame|200px|Final VME structure]]</center> ===TPCC board=== [[Image:3D_tpccboard.JPG|thumb|right|250px|Turbo Pixel Control Card]] Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot. Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. The TurboDAQ main panel comes up. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. <gallery caption='TurboDAQ screenshots'> Image:3D_turbodaq_initialisation.JPG|Initialisation panel Image:3D_turbodaq_configuration.JPG|Configuration panel Image:3D_turbodaq_datacontrol.JPG|Control panel Image:3D_turbodaq_datafitting.JPG|Datafitting panel Image:3D_turbodaq_scancontrol.JPG|Scancontrol panel Image:3D_turbodaq_onlineplot.JPG|Onlineplot panel </gallery> ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==3D sensor types== [[Image:3D_sensortypes.JPG|thumb|center|400px|Different types of 3D sensors]] ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. c7f15684e29f7f272de95a00a3ab6db8d7306fd8 262 2009-03-09T13:12:46Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== [[Image:3D_overview.JPG|noframe|400px|center|Overview]] As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) <center>[[Image:3D_finalvmestructure.JPG|frame|200px|Final VME structure]]</center> ===TPCC board=== [[Image:3D_tpccboard.JPG|thumb|right|250px|Turbo Pixel Control Card]] Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. [[Image:3D_tpccpower.JPG|thumb|right|250px|Power connector on the TPCC board]] [[Image:3D_fepower2.JPG|thumb|right|250px|Power connector for the FE on the TPCC board]] Pinning on the TPCC connector: #GND VDDD #GND VDDA #VDDD -5V, 0.5A #VDDA +5V, 1.6A Pinning on the FE connector on the TPCC: #GND VDDD #GND VDDA #VDDD +2V, 65mA #VDDA +1.6V, 30mA You can identify pin 1 on the TPCC with the small yellow dot behind the connector close to one leg. The pictures look at the connectors on the TPCC board with the retention nose pointing upwards (flip the board for the FE power). ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot. Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. The TurboDAQ main panel comes up. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. <gallery caption='TurboDAQ screenshots'> Image:3D_turbodaq_initialisation.JPG|Initialisation panel Image:3D_turbodaq_configuration.JPG|Configuration panel Image:3D_turbodaq_datacontrol.JPG|Control panel Image:3D_turbodaq_datafitting.JPG|Datafitting panel Image:3D_turbodaq_scancontrol.JPG|Scancontrol panel Image:3D_turbodaq_onlineplot.JPG|Onlineplot panel </gallery> ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==3D sensor types== [[Image:3D_sensortypes.JPG|thumb|center|400px|Different types of 3D sensors]] ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. 11662c62b107e35ac23cc540e60c686b1a0a8554 266 2009-03-09T13:31:13Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== [[Image:3D_overview.JPG|noframe|400px|center|Overview]] As we can see on Figure I.1, the measurement system consist of one computer with software to pilot the system and treat the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board (cf Figure I.3), from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. (cf Figure I.4) This board is single width, 6U, using 32 bit transfers. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we install drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lighted in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces (cf Figure I.6) and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next windows we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture in Figure I.9. Each device should have a correct resource memory. We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) <center>[[Image:3D_finalvmestructure.JPG|frame|200px|Final VME structure]]</center> ===TPCC board=== [[Image:3D_tpccboard.JPG|thumb|right|250px|Turbo Pixel Control Card]] Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board (cf Figure I.10). This bridge transfers the data to the TPLL which convert it to be transmitting on the VMEbus. Contrary to TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shield cables with Molex connector could be used. Figure I.11 show the two connectors plugged in TPCC. TPCC supplies the TPCC board; it is connected near the multicolor ribbon cable. FE connector is plugged on the TPCC back and supply the Front end card. Be careful with the power, both voltage and current it is very important to check it and respect the voltage. [[Image:3D_tpccpower2.JPG|thumb|right|250px|Power connector on the TPCC board]] [[Image:3D_fepower3.JPG|thumb|right|250px|Power connector for the FE on the TPCC board]] Pinning on the TPCC connector: #GND VDDD #GND VDDA #VDDD -5V, 0.5A #VDDA +5V, 1.6A Pinning on the FE connector on the TPCC: #GND VDDD #GND VDDA #VDDD +2V, 65mA #VDDA +1.6V, 30mA You can identify pin 1 on the TPCC with the small yellow dot behind the connector close to one leg. The pictures look at the connectors on the TPCC board with the retention nose pointing upwards (flip the board for the FE power). ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot. Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. Shown in Figure I.13, the 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from TPCC too. We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to pilot the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer ===TurboDAQ start=== To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. The TurboDAQ main panel comes up. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right of the Figure II.2 shutting down and a new orange LED switching on near the FE flat cable. Moreover the values in the Figure II.3 appeared, else an error message appears. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement (cf Figure II.4). Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. <gallery caption='TurboDAQ screenshots'> Image:3D_turbodaq_initialisation.JPG|Initialisation panel Image:3D_turbodaq_configuration.JPG|Configuration panel Image:3D_turbodaq_datacontrol.JPG|Control panel Image:3D_turbodaq_datafitting.JPG|Datafitting panel Image:3D_turbodaq_scancontrol.JPG|Scancontrol panel Image:3D_turbodaq_onlineplot.JPG|Onlineplot panel </gallery> ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==3D sensor types== [[Image:3D_sensortypes.JPG|thumb|center|400px|Different types of 3D sensors]] ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. 59b4ca0e3d3c244d267a054f40c8c43ba8701da2 File:3D sensortypes.JPG 6 132 257 2009-03-09T12:26:09Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D tpccpower.JPG 6 133 260 2009-03-09T12:54:09Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Lab Equipment 0 111 263 2009-03-09T13:22:21Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |[[http://www.farnell.com/datasheets/84674.pdf DataSheet]] |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} 3e8b1156153d5d041c792508e21030bbaeec92c3 File:3D fepower3.JPG 6 135 264 2009-03-09T13:30:30Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:3D tpccpower2.JPG 6 136 265 2009-03-09T13:30:37Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 3D Detector Activities 0 23 267 2009-03-09T13:40:07Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... [[Category:Detector lab]] 5a73231e10a9450eb2408b9f72164f483381e5bc 268 2009-03-09T13:43:21Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, Ahmed ... ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] bfae699ee478fd08a673a92187bebda7c16a4e9f Particle Physics group 0 137 269 2009-03-09T14:16:37Z Tbu082 19 New page: == Particle Physics == Wiki page for Bergen University Particle Physics Group. Projects [[Image:atlas_banner.jpg]] wikitext text/x-wiki == Particle Physics == Wiki page for Bergen University Particle Physics Group. Projects [[Image:atlas_banner.jpg]] 9cda23e37e3d1cacaf354032208794c5c0d6ffbb 271 2009-03-09T14:19:29Z Tbu082 19 wikitext text/x-wiki == Particle Physics == Wiki page for Bergen University Particle Physics Group. Projects [http://www.uib.no/fg/subatom/prosjekter/atlas|[[Image:atlas_banner.jpg]]] 1bf6e9d73a37a9487481ceeb113e92ab233ecc2e 272 2009-03-09T14:20:31Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas|Atlas Bergen UiB page]]. 539b2e7dbd08c6336aa8e092a9bb9f62de17429e 273 2009-03-09T14:23:20Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas|Atlas Bergen UiB page]]. Last changes: [[User:Tbu082|Tbu082]] 15:23, 9 March 2009 (CET) 2fff9a23f6da22e7d18ce7f0f30544a5cd0b815e 274 2009-03-09T14:27:21Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas|Atlas Bergen UiB page]]. === [[Meetings]] === Last changes: [[User:Tbu082|Tbu082]] 991c023fc4b8bcefaec9f9ab27a0aad6e745ab41 275 2009-03-09T14:27:44Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas|Atlas Bergen UiB page]]. === [[ParticlePhysicsGroupMeetings|Meetings]] === Last changes: [[User:Tbu082|Tbu082]] 5562a71f8a4335ae3cbb9e8628dd1c30e4666375 File:Atlas banner.jpg 6 138 270 2009-03-09T14:16:50Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ParticlePhysicsGroupMeetings 0 139 276 2009-03-09T14:29:33Z Tbu082 19 New page: == Particle Physics Group Meetings == [SUSYTauMeeting_12march2009|SUSY/Tau analysis meeting 12/3-09] wikitext text/x-wiki == Particle Physics Group Meetings == [SUSYTauMeeting_12march2009|SUSY/Tau analysis meeting 12/3-09] 3e44cf5f51657e83d0fd40445046119e6b01210c 277 2009-03-09T14:29:43Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == [[SUSYTauMeeting_12march2009|SUSY/Tau analysis meeting 12/3-09]] 4bbd3b4965caa1ec49766643d9cb5c8ed97e48fe 291 2009-03-09T14:36:35Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == [[SUSY/Tau analysis meeting March 12, 2009]] 238f598a2be12ced883b763f367642891f4546ba SUSY/Tau analysis meeting March 12, 2009 0 140 278 2009-03-09T14:30:23Z Tbu082 19 New page: # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if ... wikitext text/x-wiki # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB 9dbe3f947eaeb8f9e210b3fd841b7c308d9b40f6 279 2009-03-09T14:30:39Z Tbu082 19 wikitext text/x-wiki # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481|http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB dc3fdc452647c7dd198357375c90dfd96346ef4d 280 2009-03-09T14:31:14Z Tbu082 19 wikitext text/x-wiki # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [indico|http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB 1e8cf83c7104eee674fcdb5411a1f5fc6382ca03 281 2009-03-09T14:31:26Z Tbu082 19 wikitext text/x-wiki # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB 422b14559f3705e77ff61810614eaaa5fa0ea49b 282 2009-03-09T14:31:38Z Tbu082 19 wikitext text/x-wiki # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481|indico] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB 36a7fe0f207e3505e69f5396f3c20f0aa2c3e567 283 2009-03-09T14:31:52Z Tbu082 19 wikitext text/x-wiki # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481indico] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB e1c205ff9ae3ef56be756097aecb8ebb2237fdee 284 2009-03-09T14:32:20Z Tbu082 19 wikitext text/x-wiki # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB 8d9bb1d8069a30181c22325316cec38c65be9606 285 2009-03-09T14:33:23Z Tbu082 19 wikitext text/x-wiki == SUSY/Tau analysis meeting March 12, 2009 == === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === ae69fb3cbc9a1a7f7711a09f020cd54c6cdbb23c 286 2009-03-09T14:33:57Z Tbu082 19 [[SUSYTauMeeting 12march2009]] moved to [[SUSY/Tau analysis meeting March 12, 2009]]: unreadable title wikitext text/x-wiki == SUSY/Tau analysis meeting March 12, 2009 == === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === ae69fb3cbc9a1a7f7711a09f020cd54c6cdbb23c 288 2009-03-09T14:34:35Z Tbu082 19 wikitext text/x-wiki === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === [[User:Tbu082|Tbu082]] 15:34, 9 March 2009 (CET) 0bc26307f59f1c3d4942bea40eac46691beb4c56 289 2009-03-09T14:35:30Z Tbu082 19 wikitext text/x-wiki === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === --- ''[[User:Tbu082|Tbu082]] 15:34, 9 March 2009 (CET)'' d72eab9ed7373727383e2477c1ec1eb52b4f4c09 290 2009-03-09T14:35:49Z Tbu082 19 wikitext text/x-wiki === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Thomas Burgess]] 15:34, 9 March 2009 (CET)'' e2e3f1bf8cce6b297e752407f6592b1a359eaef1 292 2009-03-09T14:40:49Z Tbu082 19 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (XX-XX-XX) and in the Bergen Evo room (next to Bjarnes office) === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Thomas Burgess]] 15:34, 9 March 2009 (CET)'' eeeefbdb0778c1af223f61074c8d433b6814f6c9 SUSYTauMeeting 12march2009 0 141 287 2009-03-09T14:33:57Z Tbu082 19 [[SUSYTauMeeting 12march2009]] moved to [[SUSY/Tau analysis meeting March 12, 2009]]: unreadable title wikitext text/x-wiki #REDIRECT [[SUSY/Tau analysis meeting March 12, 2009]] b443ffc5d33b718206fc08dcd0f7adc535c60038 User:Ato061 2 142 293 2009-03-09T15:20:51Z Tbu082 19 New page: == Arshak Tonoyan == wikitext text/x-wiki == Arshak Tonoyan == bba6c393a33467f8da4bfa9e0987d55941ecedc0 294 2009-03-09T15:23:30Z Ato061 22 wikitext text/x-wiki == Arshak Tonoyan == [[Image:arshak.jpg]] 2f807d47562117f5694ed1751b518a2bf8360a78 File:Arshak.jpg 6 143 295 2009-03-09T15:23:53Z Ato061 22 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 User:Tbu082 2 107 296 2009-03-09T15:26:40Z Tbu082 19 wikitext text/x-wiki This is the personal page from Thomas Burgess. See my [http://tburgess.web.cern.ch/tburgess/ CERN] or http://www.uib.no/personer/Thomas.Burgess UiB] web pages for more information 894192728d196caba4c4435ef84d1dab47a3755d 297 2009-03-09T15:26:52Z Tbu082 19 wikitext text/x-wiki This is the personal page from Thomas Burgess. See my [http://tburgess.web.cern.ch/tburgess/ CERN] or [http://www.uib.no/personer/Thomas.Burgess UiB] web pages for more information a074c2de66c76643c1599989e35c3a34df6f8153 Synthese av VHDL 0 36 298 2009-03-09T23:17:04Z St12361 17 corrected entity reference for alu_tb wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> f243d279f762fb5edb2ad5f4687c186d06f74380 299 2009-03-09T23:18:58Z St12361 17 Undo revision 298 by [[Special:Contributions/St12361|St12361]] ([[User talk:St12361|Talk]]) wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> 61671d970b8af5ef304ba9032b96c02dd0eef3c1 File:Linearity 030209.pdf 6 144 300 2009-03-10T10:25:41Z Her065 20 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 302 2009-03-10T10:32:49Z Her065 20 Unprotected "[[Image:Linearity 030209.pdf]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 User:Her065 2 113 301 2009-03-10T10:30:21Z Her065 20 wikitext text/x-wiki This is the personal page for Hege Austrheim Erdal. 4454ff186cdc07fa431e13fbbbd5df39dbfc4204 Detector lab 0 21 303 2009-03-10T10:32:57Z Her065 20 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf‎ Hege: Linearity Results 03.02.09] ad7d322a5c0cf7f88599c45b00aaf7eb66920361 Detector lab 0 21 304 2009-03-10T10:33:52Z Her065 20 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] 0303c02f262350622eea6e206beb7e829e95b2e1 SUSY/Tau analysis meeting March 12, 2009 0 140 305 2009-03-10T11:51:22Z Ato061 22 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Thomas Burgess]] 15:34, 9 March 2009 (CET)'' 286948f5edb5f15ed365cd8a15521f645d7b713c 333 2009-03-11T10:36:50Z Tbu082 19 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== Title: BergenSUSY Description: Bergen SUSY/Tau meeting Community: ATLAS Password: SUSYBergen Time: 2009-03-12 08:30-10:30 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Thomas Burgess]] 15:34, 9 March 2009 (CET)'' f49eca103bc3f83d788c77cb547314d2b60276dd 334 2009-03-11T10:37:35Z Tbu082 19 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== Title: BergenSUSY Description: Bergen SUSY/Tau meeting Community: ATLAS Password: SUSYBergen Time: 2009-03-12 08:30-10:30 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Tbu082]] 11:37, 11 March 2009 (CET)''' [[Category:Particle Physics]] 55ca39a04eca22bb62a4f1950f980d9114e98cdf 335 2009-03-11T10:40:44Z Ato061 22 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== '''Title: BergenSUSY Description: Bergen SUSY/Tau meeting Community: ATLAS Password: SUSYBergen Time: 2009-03-12 08:30-10:30''' Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Tbu082]] 11:37, 11 March 2009 (CET)''' [[Category:Particle Physics]] dac66a1542f62fa1f93610d43b3a879c16b757a1 336 2009-03-11T10:42:03Z Ato061 22 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== * Title: BergenSUSY * Description: Bergen SUSY/Tau meeting * Community: ATLAS * Password: SUSYBergen * Time: 2009-03-12 08:30-10:30 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Tbu082]] 11:37, 11 March 2009 (CET)''' [[Category:Particle Physics]] ada241d630521b8edc4333a066ad18f9d9f2fd9c 337 2009-03-11T10:42:50Z Ato061 22 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== * '''Title''': BergenSUSY * '''Description''': Bergen SUSY/Tau meeting * '''Community''': ATLAS * '''Password''': SUSYBergen * '''Time''': 2009-03-12 08:30-10:30 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB === Notes === -Last changed ''[[User:Tbu082|Tbu082]] 11:37, 11 March 2009 (CET)''' [[Category:Particle Physics]] f04d3c91efedc820e71838174638756bff7b19cf 359 2009-03-12T07:58:40Z Kka054 24 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== * '''Title''': BergenSUSY * '''Description''': Bergen SUSY/Tau meeting * '''Community''': ATLAS * '''Password''': SUSYBergen * '''Time''': 2009-03-12 08:30-10:30 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB [[analysis1203.pdf]] === Notes === -Last changed ''[[User:Tbu082|Tbu082]] 11:37, 11 March 2009 (CET)''' [[Category:Particle Physics]] 6535a8b767fa23adde5c863656fa2f823fb0c677 360 2009-03-12T07:59:29Z Kka054 24 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== * '''Title''': BergenSUSY * '''Description''': Bergen SUSY/Tau meeting * '''Community''': ATLAS * '''Password''': SUSYBergen * '''Time''': 2009-03-12 08:30-10:30 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB [[media:analysis1203.pdf]] === Notes === -Last changed ''[[User:Tbu082|Tbu082]] 11:37, 11 March 2009 (CET)''' [[Category:Particle Physics]] 8e558e6438658fffd01f5dcdd74474ffdffeda03 364 2009-03-12T08:09:24Z Tbu082 19 wikitext text/x-wiki === Connecting === The meeting will be held 9:00-10:00 on Thursday, 12th of March, 2009. You can connect via EVO, meeting name is BergenSUSY. Multi user connections will be available at CERN (40-R-C10) and in the Bergen Evo room (next to Bjarnes office) ==== EVO Details ==== * '''Title''': BergenSUSY * '''Description''': Bergen SUSY/Tau meeting * '''Community''': ATLAS * '''Password''': SUSYBergen * '''Time''': 2009-03-12 08:30-10:30 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eDeae8vBvta9atIMaIID - Phone Bridge ID: 852331 Password: 7865 EVO Phone Bridge Telephone Numbers: --------------- * USA (Caltech, Pasadena, CA) +1 626 395 2112 * Switzerland (CERN, Geneva) +41 22 76 71400 * Slovakia (UPJS, Kosice) +421 55 234 2420 * Italy (INFN, several cities) http://server10.infn.it/video/index.php?page=telephone_numbers Enter '4000' to access the EVO bridge * Germany (DESY, Hamburg) +49 40 8998 1340 * USA (BNL, Upton, NY) +1 631 344 6100 * United Kingdom (University of Manchester) +44 161 306 6802 === Agenda === # SUSY analysis, current work and what remains (Alex and Therese) # Background analysis -- top bg with emphasis on taus from top; this is something master students can contribute to if they want and we can present the results on the coming "SUSY top bg" meetings (Semi-leptonic top at high mT focus meeting); see the last meeting: [http://indico.cern.ch/conferenceDisplay.py?confId=52481] (Therese makes a small intro on what is interesting here, and we can have a discussion about it) # Data production and computer resources in Bergen (Alex and Thomas) # AOB [[media:Analysis_1203.pdf]] === Notes === -Last changed ''[[User:Tbu082|Tbu082]] 11:37, 11 March 2009 (CET)''' [[Category:Particle Physics]] 8aeca6900fe7623406a43ee7d40dff9c25fe112c Frequently asked questions FAQ 0 115 306 2009-03-10T14:40:55Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== [[Image:3D_overview.JPG|noframe|400px|center|Overview]] The measurement system consist of one computer with software to control the system and collect the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board, from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. This board is single width, 6U, using 32 bit transfer. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we need to install some drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lit in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is a yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next window we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture. Each device should have a correct resource memory. We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) <center>[[Image:3D_finalvmestructure.JPG|frame|200px|Final VME structure]]</center> ===TPCC board=== [[Image:3D_tpccboard.JPG|thumb|right|250px|Turbo Pixel Control Card]] Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board. This bridge transfers the data to the TPLL which convert it to be transmitted on the VMEbus. Contrary to the TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shielded cables with Molex connectors should be used. The figures show the two connectors plugged in TPCC. The TPCC power cable supplies the TPCC board; it is connected near the multicolor ribbon cable. The FE power connector is plugged on the TPCC back and supplies the Front end card. Be careful with the power, both voltage and current is very important to check and respect the voltage. [[Image:3D_tpccpower2.JPG|thumb|right|250px|Power connector on the TPCC board]] [[Image:3D_fepower3.JPG|thumb|right|250px|Power connector for the FE on the TPCC board]] Pinning on the TPCC connector: #GND VDDD #GND VDDA #VDDD -5V, 0.5A #VDDA +5V, 1.6A Pinning on the FE connector on the TPCC: #GND VDDD #GND VDDA #VDDD +2V, 65mA #VDDA +1.6V, 30mA You can identify pin 1 on the TPCC with the small yellow dot behind the connector close to one leg. The pictures look at the connectors on the TPCC board with the retention nose pointing upwards (flip the board for the FE power). ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot. Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. The 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from the TPCC. We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to control the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer. ===TurboDAQ start=== To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. The TurboDAQ main panel comes up. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. If "resman" is not run, TurboDAQ will crash during initialisation. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right shutting down and a new orange LED switching on near the FE flat cable. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement. Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill a value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. <gallery caption='TurboDAQ screenshots'> Image:3D_turbodaq_initialisation.JPG|Initialisation panel Image:3D_turbodaq_configuration.JPG|Configuration panel Image:3D_turbodaq_datacontrol.JPG|Control panel Image:3D_turbodaq_datafitting.JPG|Datafitting panel Image:3D_turbodaq_scancontrol.JPG|Scancontrol panel Image:3D_turbodaq_onlineplot.JPG|Onlineplot panel </gallery> ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==3D sensor types== [[Image:3D_sensortypes.JPG|thumb|center|400px|Different types of 3D sensors]] ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. ed0119a6930343d58a1992b81e8927923ad5ba20 361 2009-03-12T08:03:56Z Dfe002 7 wikitext text/x-wiki ==How to set up a general 3D system== ===General overview=== [[Image:3D_overview.JPG|noframe|400px|center|Overview]] The measurement system consist of one computer with software to control the system and collect the data, one VME crate with controller board and a board (TPLL) to clock the signal and transfer the data, one data acquisition board (TPCC), one electronic card to read-out the signal from the detector and three power supplies. Below is a list of the hardware and software components of this system: * Computer HP with Windows XP machine * TurbDAQ 6.6 software (cf part II of this report) * PCI-MXI-2 National Instrument * VME crate WES * VME-MXI-2 controller National Instrument * MXI-2 cable * Turbo pixel low level card (TPLL) * Turbo pixel control card (TPCC) * 2 flat cables * Front End electronic board * 1 High power supply Keithley 487 * 1 Lemo cable with adaptor * 2 Low power supply Oltronix B703DT * 2 Shield cables for electric supply ===PCI-MXI-2=== [[Image:3D_devicemanagerwindow.JPG|thumb|right|300px|Device Manager Window]] A PCI-MXI-2 is plugged on the PCI slot 1 of the computer mother board. This card is the interface between the computer and the VME. The installation can be started from the following path: Computer properties * Hardware ** Device Manager *** VXI Interface This opens the properties of the PCI-VXI card and under Driver tab we can upload the plug-and-play driver to start the installation of the PCI card. ===VME system=== The VME controller board, from National Instruments, has to plug in the first slot of the VME crate to control the VMEbus (Vesa Modular Eurocard bus). The connection between Computer and VME is carried out through MXI-2 cable plugged in PCI card and in the VME-MXI-2 controller board. (Do not modify the switch on the board because it used in case of “controller board”, the switches U20 is used for slave mode of the board) We plug another VME card in the crate, the TPLL board, which is used for clock generation and synchronization, data FIFO, trigger FIFO, 16 Mbytes board SRAM support module level histogramming, FPGA for encoding/decoding the MCC serial data protocol. This board is single width, 6U, using 32 bit transfer. To configure the VMEbus and the TPLL properly you need to install the following National Instrument software and driver: * Measurement and Automation (MAX version 4.5) * NI-VXI (version 3.5.1) * NI-VISA (with MAX 4.5) [[Image:3D_startingresman.JPG|thumb|right|250px|Starting the resource manager]] To communicate with the VMEbus via the MXI interface, we need to install some drivers. The NI-VXI/VISA drivers include a Resource Manager, an interactive configuration and troubleshooting program, libraries of software routines for MAX programming. First, switch-on the crate and check the led are lit in the front of the board. Then you start the computer and launch MAX. Shown in Figure I.5 is a screenshot from MAX, displaying how you launch the sub-routine “Resource Manager” (Resman). Tools >> NI-VXI >> VXI Ressource Manager [[Image:3D_treeconfiguration.JPG|thumb|right|250px|Tree configuration]] After five second a tree configuration will appear in Devices and Interfaces and the PCI-MXI-2 card, the MXI-2 bridge and the VME controller appear when the drivers are properly installed. There is a yellow exclamation mark on frame 1 due to the fact that our crate is VME, not VXI. The next step is to add the TPLL board in this architecture. Right click on Frame 1 and click on “Create new VME device”. A new window appears and by following the steps the device is installed. The first step is to choose the pseudo logical address to “256”. The logical address distinguishes between all the boards in the crate. Next it is important to select Frame 1 in order to see TPLL in the same frame as the controller. In the next window we can choose either a new device or one already existing (Choose new device). The third step we enter a board name and a manufacturer. The final step is to allocate free memory resources for the device . For TPLL, we must select A32 address range and fill the “Setting” part with the TPLL resource. Currently the range is 0x10000000 – 0x107FFFFF. <gallery caption='Creating a new VME device'> Image:3D_createnewvmedevice.JPG|Create new VME device Image:3D_entervmeparameters1.JPG|Enter parameters Image:3D_entervmeparameters2.JPG|Enter parameters </gallery> At the end of this operation, the VME crate should be operational with the two boards inside and it should appear in the tree architecture. Each device should have a correct resource memory. We can find all this information in the folder “3D Syst VME-MXI-2” on the desktop along with all the National instrument datasheets. If the system needs another board (for example: cooling system), follow the same procedure to add it, but be careful to change pseudo logical address and address range (A32 0x1000…) <center>[[Image:3D_finalvmestructure.JPG|frame|200px|Final VME structure]]</center> ===TPCC board=== [[Image:3D_tpccboard.JPG|thumb|right|250px|Turbo Pixel Control Card]] Now we are ready to plug the multicolor flat cable between the TPLL and the TPCC board. This bridge transfers the data to the TPLL which convert it to be transmitted on the VMEbus. Contrary to the TPLL board which is supplied through the VME crate, the TPCC card need four different power supplies, two digitals and two analogues. These supply the board and a part of the Front end electronic card. Two shielded cables with Molex connectors should be used. The figures show the two connectors plugged in TPCC. The TPCC power cable supplies the TPCC board; it is connected near the multicolor ribbon cable. The FE power connector is plugged on the TPCC back and supplies the Front end card. Be careful with the power, both voltage and current is very important to check and respect the voltage. [[Image:3D_tpccpower2.JPG|thumb|right|250px|Power connector on the TPCC board]] [[Image:3D_fepower3.JPG|thumb|right|250px|Power connector for the FE on the TPCC board]] Pinning on the TPCC connector: #GND VDDD #GND VDDA #VDDD -5V, 0.5A #VDDA +5V, 1.6A Pinning on the FE connector on the TPCC: #GND VDDD #GND VDDA #VDDD +2V, 65mA #VDDA +1.6V, 30mA You can identify pin 1 on the TPCC with the small yellow dot behind the connector close to one leg. The pictures look at the connectors on the TPCC board with the retention nose pointing upwards (flip the board for the FE power). ===Front End electronic card=== The 3D pixel sensor is connected to the FE readout electronic using a complex soldering technique called “Bump bonding”. It needs a great accuracy; each pixel must be connected to each FE readout plot. Such a system is located in Bonn and the 3D sensors from SINTEF are bump bonded there. The electronic board where the 3D detector is bump bonded contains tunable components in order to select the best parameter for each pixel. The 3D sensor is in the middle of the card. At the left there is the high voltage supply to deplete the sensor. To the right, there are the ribbon cable connection to plug this from the TPCC and a LEMO cable. The calibration signal goes through the LEMO cable from the TPCC. We have to be careful with the high voltage applied. The value depends on the pixel sensor type but it is always negative. For example to deplete a 3D pixel detector we supply around -30 volt instead of more than -100 volt for a 2D pixel sensor. So we add voltmeter in parallel to check this voltage. ==Turbo DAQ== II. TurboDAQ The software TurboDAQ is installed on the computer. Currently the release 6.6 is running and all the instructions to download and to install this software are given on the Web page: [http://pixdata.lbl.gov/html/TurboDAQ.htm http://pixdata.lbl.gov/html/TurboDAQ.htm] This software permits to control the data acquisition and display the readout from the pixel detector. It is written in CVI language, so we need the software LabWindows CVI from NI. Currently the release 8.5 of CVI is installed on the computer. All the files concerning the software are in the folder named TurboDAQ on the desktop of the computer. ===TurboDAQ start=== To launch the program double click on the shortcut “TurboDAQ.exe” on desktop. The TurboDAQ main panel comes up. This panel contains all the functions that we can use with this software, but in the case of pixel sensor measurement we do not use all the tabs. Below we will describe the functions and explain the procedure used to carry out measurements. After switching on the VME crate and the computer, “resman” needs to be launched to configure the VME bus. If "resman" is not run, TurboDAQ will crash during initialisation. After that we can start TurboDAQ. The TPCC can be powered either by an independent power supply or with a GPIB power supply linked to the computer. In the first case we adjust the voltage and current button by hand and on the second case we can open the Power console panel in TurboDAQ to tune which supply we want. In both case six LEDs near the supply connector number 1 must light and two others above the multicolor flat cable. If the TPCC LEDs are correctly switched on, we open the Initialise PLL&PCC panel and push the button “Reinitialise”. If all the supply and configuration are correct, we will observe the two lights on the right shutting down and a new orange LED switching on near the FE flat cable. When this is all correct, start fitting the other panels with the necessary parameters. First, open “Configuration” in order to define the parameters of the measurement. Enter the assembly type and the name of the module in “Module identifier”. In case of 3D pixel single chip used, unchanged “PCC/PICT”, “Strobe setup” and “Trigger setup” values. Then select F for the “Global Address” (GA) and fill a value for each parameter. A good idea is to modify them one by one and make a scan to understand their effect. After this, we can start all the three tests at the bottom of the panel, “Send module configuration”, “Test global registers” and “Test pixel registers”. The red light in the right corner must shut down and the black light must become green, else there is problem and an error message will appear. Concerning the temperature, the new TPCC board should show the correct value. We can fill TDACS and FDACS parameters with an already complete file by a previous scan if you click on the white square just below but we will see later in this report. <gallery caption='TurboDAQ screenshots'> Image:3D_turbodaq_initialisation.JPG|Initialisation panel Image:3D_turbodaq_configuration.JPG|Configuration panel Image:3D_turbodaq_datacontrol.JPG|Control panel Image:3D_turbodaq_datafitting.JPG|Datafitting panel Image:3D_turbodaq_scancontrol.JPG|Scancontrol panel Image:3D_turbodaq_onlineplot.JPG|Onlineplot panel </gallery> ===TurboDAQ threshold calibration procedure=== Before used radioactive source to send particle on the detector, we have to calibrate it. Indeed, each pixel must be tune to obtain the same threshold on the entire sensor surface, thus the detector will be efficient. By following this procedure the pixels are tuned: # As it is written before, set the parameters and carried out the first “Threshold Scan, Internal-Cal” # Modified the parameters (for example : GDAC) until to obtain the best first Threshold scan, that is to say, mean threshold value the nearest to the target value enter in “Data fitting” # With this parameters run the scan “TDAC Tune, Internal-Cal” to obtain the first TDAC scan and the file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter, by clicking on the white square and upload the file “namefile_tdacs_0.out”. # Carried out the second threshold scan and observe the improvement. # With this changes run the scan “FDAC Tune, Internal-Cal” to obtain the first FDAC scan and the file “namefile_fdacs_0.out”. # In “Configuration panel” set FDAC parameter, by clicking on the white square and upload the file “namefile_fdacs_0.out”. # Carried out the third threshold scan and observe the improvement. # With this changes run one more scan “TDAC Tune, Internal-Cal” to obtain the second TDAC scan and the second file “namefile_tdacs_0.out”. # In “Configuration panel” set TDAC parameter one more time, by clicking on the white square and upload the second file “namefile_tdacs_0.out”. # Carried out the fourth threshold scan, we should obtain an uniform pixel map. Check the threshold mean value and the noise in the file “namefile_logfile” # Under “Configuration panel” click on “Module configurations”, fill Channel 0 with a name and save the configuration. Now we can use this configuration each time we use the FE with the detector bump bonded on it. We have to carry out this procedure each time we study a new detector system. ==3D sensor types== [[Image:3D_sensortypes.JPG|thumb|center|400px|Different types of 3D sensors]] ==What if TurboDAQ crashes during "initialization"?== Make sure you have run "resman" before starting TurboDAQ. [[User:Dfe002|Dominik]] 09:03, 12 March 2009 (CET) 0d7854173784dbe1ef1cd14132743347008a64ee User:Kka054 2 145 307 2009-03-10T15:19:56Z Tbu082 19 New page: Alex Kastanas userpage wikitext text/x-wiki Alex Kastanas userpage b67ba3a6da482d489a2aa9538c6af8dd01a8ec7d Particle Physics group 0 137 308 2009-03-10T15:30:54Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) dd729dc7968f14b854cc446545de957a22381892 309 2009-03-10T15:32:43Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasNordugrid|Nordugrid]] === Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) 67fb3b7a4208e7622174762d941d76f219d3c9c9 314 2009-03-10T15:50:14Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasNordugrid|Nordugrid]] === === [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] === Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) e3aaa3a3ddd8d6255d9c19fde9e2312b5b5cb37a 317 2009-03-10T16:06:29Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasNordugrid|Nordugrid]] === === [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] === === [[AtlasSafety|Safety training for ATLAS work]] === Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) 86e32806ff1bd050fb1899d7c32aa1817e4a29b3 323 2009-03-10T16:32:31Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasNordugrid|Nordugrid]] === === [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) ca5df0ef00cde46af18fddbe0242278bba603c4c 338 2009-03-11T11:58:33Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasNordugrid|Nordugrid]] === === [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] === Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) f9154f0c511b571932c08cd1e23c2a59e9214a71 342 2009-03-11T12:43:31Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasNordugrid|Nordugrid]] === === [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] === === [[AtlasDataFormats| ATLAS data formats]] === Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) 121e1348d5670987c02cad833d474aa27c0830d0 344 2009-03-11T13:16:33Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) 52b5ac81981db75dc7c1cc6b3218856299695c60 345 2009-03-11T13:17:52Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) 6e290d09f00f030a9f0412026f1051dd36cb37e4 346 2009-03-11T13:18:06Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) 7ae8e443b6b626c98cd9173156e82b5ab48eb299 347 2009-03-11T13:19:34Z Kka054 24 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) edff07c34113340490f38dfc47ec0814d2f505eb AtlasKlientdriftWalkthrough 0 147 315 2009-03-10T16:03:19Z Kka054 24 New page: = Walkthrough: Setting up ATHENA on a central managed computers = The purpose of this walk through is to create a working *ATHENA* setup on the scratch disk of one of the centrally manage... wikitext text/x-wiki = Walkthrough: Setting up ATHENA on a central managed computers = The purpose of this walk through is to create a working *ATHENA* setup on the scratch disk of one of the centrally managed *Fedora 8* machines. This walk through works successfully on on my desktop machine '''iftsub041012'''. I've assumed you are using '''bash''', if you're using '''csh''', change '''*.sh''' to '''*.csh''', and all variable definitions from <tt>export A=b</tt> to <tt>set A b</tt>. If you are not using a Fedora 8 machine, things may not work. In the case of using a '''Scientific Linux 4''' machine, you can skip the legacy compiler step and the <tt>--pretend-platform</tt> flag to <tt>pacman</tt>. == Installing ATHENA == The '''ATLAS''' offline software '''ATHENA''' can be installed by following the steps described in this section. For your convenience the steps are also implemented in the following script [%ATTACHURL%/setup_install.sh setup_install.sh] === Decide on a version to use and set up directories === The latest stable version of '''ATHENA''' when writing this was <tt>13.0.40</tt>. You'll need a writable directory on a disk with lots of available space to install (~6.5 Gb), for this an external disk or the <tt>/scratch</tt> partition is very useful. To simplify things declare some environment variables and create the directory <pre> export VERSION=13.0.40 export BASEDIR=/scratch/ATLAS export INSTALL=${BASEDIR}/ATLAS_${VERSION} mkdir -p ${INSTALL} </pre> === Legacy compilers === '''Fedora 8''' is '''''almost''''' compatible with '''slc4''' if you use the _legacy compilers_ <tt>gcc34</tt> and <tt>g++34</tt> (gcc 3.4.6) instead of the default compilers <tt>gcc</tt> and <tt>g++</tt> (gcc 4.1.2). To do this place links in to the legacy compilers named as the default compilers in front of your path <pre> mkdir -p ${INSTALL}/mybin cd ${INSTALL}/mybin ln -s /usr/bin/g++34/g++ ln -s /usr/bin/gcc34/gcc export PATH=${INSTALL}/mybin/:$PATH </pre> === Install and run <tt>pacman</tt> === <tt>pacman</tt> is a package installer available from http://physics.bu.edu/pacman/ . Install it by running <pre> cd ${INSTALL} wget http://physics.bu.edu/pacman/sample_cache/tarballs/pacman-latest.tar.gz tar xfvz pacman-latest.tar.gz </pre> To install run <pre> cd ${INSTALL}/pacman-* source setup.sh cd ${INSTALL} VERSION_=`echo ${VERSION} | sed 's,\.,_,g'` pacman -allow trust-all-caches -pretend-platform SLC-4 -V -get am-CERN:AtlasOffline_${VERSION_}_i686_slc4_gcc34_opt </pre> answer '''yall''' to say yes to all questions (safe for a fresh install). Note: '''''Installing ATHENA takes a while (even with a fast internet connection)''''' == Creating a workarea to work on == A workarea using the ATHENA installation can be created by the steps in this section For your convenience the steps are also implemented in the following script [[%ATTACHURL%/setup_workarea.sh][setup_workarea.sh]] === Prepare environment === First set environment variables and create a workarea directory <pre> export VERSION=13.0.40 export BASE=/scratch/ATLAS export WORKAREA=${BASE}/workarea_${VERSION} export INSTALL=${BASE}/ATLAS_${VERSION} export PATH=${INSTALL}/mybin:${PATH} mkdir -p ${WORKAREA} </pre> === Create a requirements file === The '''requirements''' file is used by <tt>cmt</tt>, it must have the path <tt>$WORKAREA/requirements</tt>. The following file was adapted from https://twiki.cern.ch/twiki/bin/view/Atlas/WorkBookSetAccount (note that <tt>SITEROOT</tt> should match your <tt>$INSTALL</tt> directory) <pre> set CMTSITE STANDALONE set SITEROOT /scratch/ATLAS/ macro ATLAS_TEST_AREA /scratch/workarea macro ATLAS_DIST_AREA ${SITEROOT} apply_tag projectArea macro SITE_PROJECT_AREA ${SITEROOT} macro EXTERNAL_PROJECT_AREA ${SITEROOT} apply_tag opt apply_tag setup apply_tag simpleTest use AtlasLogin AtlasLogin-* $(ATLAS_DIST_AREA) set CMTCONFIG i686-slc4-gcc34-opt </pre> It is important to get <tt>set SITEROOT /scratch/ATLAS/</tt> and <tt>macro ATLAS_TEST_AREA /scratch/workarea</tt> to point to your ATLAS software installation and workarea correct. === Prepare workspace === Use '''CMT''' to prepare for running <pre> cd /scratch/workarea source /scratch/ATLAS/CMT/*/mgr/setup.sh cmt config . setup.sh -tag=$VERSION mkdir $VERSION </pre> once this is done, you can run the <tt>root</tt> bundled with the production packages directly from the prompt. You have to initialize the environment before each use, to make things easier create a script <tt>mysetup.sh</tt> that does all the steps for you <pre> export VERSION=13.0.40 export BASE=/scratch/ATLAS export WORKAREA=${BASE}/workarea_${VERSION} export INSTALL=${BASE}/ATLAS_${VERSION} source setup.sh -tag=${VERSION} export PATH=${INSTALL}/mybin:${PATH} </pre> and before using your environment just do <tt>source mysetup.sh</tt> == Adding packages to workspace == How to install packages is also described in the wiki page GettingStartedWithAthena, remeber to source to <tt>/scratch/workarea/mysetup.sh</tt> before compiling! Packages are availible in the cvs http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/ Make sure that the version of the packages you download are compatible with your ATHENA release! Add the cvs sub-directory to the workspace and unpack downloaded tar-ball there <pre> mkdir -p ${WORKAREA}/${VERSION}/SubDirectory cd mkdir ${WORKAREA}/${VERSION}/SubDirectory #download package here tar xfvz Package.tar.gz </pre> it is not safe to remove the tar-ball. Next configure and build package <pre> cd Package/cmt cmt config source setup.sh gmake </pre> === Adding SUSYDPDMaker to your workarea === These instructions are based on text found on the twiki page https://twiki.cern.ch/twiki/bin/view/Atlas/SusyDPDMaker and requires ATHENA 13.0.40 release to work. Before running remember to do <tt>source mysetup.sh</tt> in your workspace. Make sure you have the <tt>PhysicsAnalysis</tt> directory in your workarea <pre> pa_dir=${WORKAREA}/${VERSION}/PhysicsAnalysis mkdir -p ${pa_dir} </pre> then download unpack and install <tt>DPDUtils-00-00-09</tt> <pre> cd ${pa_dir} wget "http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/DPDUtils.tar.gz?view=tar&pathrev=DPDUtils-00-00-09" tar xfvz DPDUtils.tar.gz* rm DPDUtils.tar.gz* cd DPDUtils/cmt cmt config source setup.sh gmake </pre> and <tt>SUSYPhys/SUSYDPDMaker-00-00-04</tt> <pre> mkdir -p ${pa_dir}/SUSYPhys cd ${pa_dir}/SUSYPhys wget "http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/SUSYPhys/SUSYDPDMaker.tar.gz?view=tar&pathrev=SUSYDPDMaker-00-00-04" tar xfvz SUSYDPDMaker.tar.gz* rm SUSYDPDMaker.tar.gz* cd SUSYDPDMaker/cmt cmt config source setup.sh gmake </pre> fb7fcad49c54f3aac343e54c7f1501a4173a21d6 316 2009-03-10T16:04:22Z Kka054 24 wikitext text/x-wiki = Walkthrough: Setting up ATHENA on a central managed computers = The purpose of this walk through is to create a working *ATHENA* setup on the scratch disk of one of the centrally managed *Fedora 8* machines. This walk through works successfully on on my desktop machine '''iftsub041012'''. I've assumed you are using '''bash''', if you're using '''csh''', change '''*.sh''' to '''*.csh''', and all variable definitions from <tt>export A=b</tt> to <tt>set A b</tt>. If you are not using a Fedora 8 machine, things may not work. In the case of using a '''Scientific Linux 4''' machine, you can skip the legacy compiler step and the <tt>--pretend-platform</tt> flag to <tt>pacman</tt>. == Installing ATHENA == The '''ATLAS''' offline software '''ATHENA''' can be installed by following the steps described in this section. For your convenience the steps are also implemented in the following script [%ATTACHURL%/setup_install.sh setup_install.sh] === Decide on a version to use and set up directories === The latest stable version of '''ATHENA''' when writing this was <tt>13.0.40</tt>. You'll need a writable directory on a disk with lots of available space to install (~6.5 Gb), for this an external disk or the <tt>/scratch</tt> partition is very useful. To simplify things declare some environment variables and create the directory <pre> export VERSION=13.0.40 export BASEDIR=/scratch/ATLAS export INSTALL=${BASEDIR}/ATLAS_${VERSION} mkdir -p ${INSTALL} </pre> === Legacy compilers === '''Fedora 8''' is '''''almost''''' compatible with '''slc4''' if you use the _legacy compilers_ <tt>gcc34</tt> and <tt>g++34</tt> (gcc 3.4.6) instead of the default compilers <tt>gcc</tt> and <tt>g++</tt> (gcc 4.1.2). To do this place links in to the legacy compilers named as the default compilers in front of your path <pre> mkdir -p ${INSTALL}/mybin cd ${INSTALL}/mybin ln -s /usr/bin/g++34/g++ ln -s /usr/bin/gcc34/gcc export PATH=${INSTALL}/mybin/:$PATH </pre> === Install and run <tt>pacman</tt> === <tt>pacman</tt> is a package installer available from http://physics.bu.edu/pacman/ . Install it by running <pre> cd ${INSTALL} wget http://physics.bu.edu/pacman/sample_cache/tarballs/pacman-latest.tar.gz tar xfvz pacman-latest.tar.gz </pre> To install run <pre> cd ${INSTALL}/pacman-* source setup.sh cd ${INSTALL} VERSION_=`echo ${VERSION} | sed 's,\.,_,g'` pacman -allow trust-all-caches -pretend-platform SLC-4 -V -get am-CERN:AtlasOffline_${VERSION_}_i686_slc4_gcc34_opt </pre> answer '''yall''' to say yes to all questions (safe for a fresh install). Note: '''''Installing ATHENA takes a while (even with a fast internet connection)''''' == Creating a workarea to work on == A workarea using the ATHENA installation can be created by the steps in this section For your convenience the steps are also implemented in the following script [[%ATTACHURL%/setup_workarea.sh][setup_workarea.sh]] === Prepare environment === First set environment variables and create a workarea directory <pre> export VERSION=13.0.40 export BASE=/scratch/ATLAS export WORKAREA=${BASE}/workarea_${VERSION} export INSTALL=${BASE}/ATLAS_${VERSION} export PATH=${INSTALL}/mybin:${PATH} mkdir -p ${WORKAREA} </pre> === Create a requirements file === The '''requirements''' file is used by <tt>cmt</tt>, it must have the path <tt>$WORKAREA/requirements</tt>. The following file was adapted from https://twiki.cern.ch/twiki/bin/view/Atlas/WorkBookSetAccount (note that <tt>SITEROOT</tt> should match your <tt>$INSTALL</tt> directory) <pre> set CMTSITE STANDALONE set SITEROOT /scratch/ATLAS/ macro ATLAS_TEST_AREA /scratch/workarea macro ATLAS_DIST_AREA ${SITEROOT} apply_tag projectArea macro SITE_PROJECT_AREA ${SITEROOT} macro EXTERNAL_PROJECT_AREA ${SITEROOT} apply_tag opt apply_tag setup apply_tag simpleTest use AtlasLogin AtlasLogin-* $(ATLAS_DIST_AREA) set CMTCONFIG i686-slc4-gcc34-opt </pre> It is important to get <tt>set SITEROOT /scratch/ATLAS/</tt> and <tt>macro ATLAS_TEST_AREA /scratch/workarea</tt> to point to your ATLAS software installation and workarea correct. === Prepare workspace === Use '''CMT''' to prepare for running <pre> cd /scratch/workarea source /scratch/ATLAS/CMT/*/mgr/setup.sh cmt config . setup.sh -tag=$VERSION mkdir $VERSION </pre> once this is done, you can run the <tt>root</tt> bundled with the production packages directly from the prompt. You have to initialize the environment before each use, to make things easier create a script <tt>mysetup.sh</tt> that does all the steps for you <pre> export VERSION=13.0.40 export BASE=/scratch/ATLAS export WORKAREA=${BASE}/workarea_${VERSION} export INSTALL=${BASE}/ATLAS_${VERSION} source setup.sh -tag=${VERSION} export PATH=${INSTALL}/mybin:${PATH} </pre> and before using your environment just do <tt>source mysetup.sh</tt> == Adding packages to workspace == How to install packages is also described in the wiki page GettingStartedWithAthena, remeber to source to <tt>/scratch/workarea/mysetup.sh</tt> before compiling! Packages are availible in the cvs http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/ Make sure that the version of the packages you download are compatible with your ATHENA release! Add the cvs sub-directory to the workspace and unpack downloaded tar-ball there <pre> mkdir -p ${WORKAREA}/${VERSION}/SubDirectory cd mkdir ${WORKAREA}/${VERSION}/SubDirectory #download package here tar xfvz Package.tar.gz </pre> it is not safe to remove the tar-ball. Next configure and build package <pre> cd Package/cmt cmt config source setup.sh gmake </pre> === Adding SUSYDPDMaker to your workarea === These instructions are based on text found on the twiki page https://twiki.cern.ch/twiki/bin/view/AtlasProtected/SusyDPDMaker and requires ATHENA 13.0.40 release to work. Before running remember to do <tt>source mysetup.sh</tt> in your workspace. Make sure you have the <tt>PhysicsAnalysis</tt> directory in your workarea <pre> pa_dir=${WORKAREA}/${VERSION}/PhysicsAnalysis mkdir -p ${pa_dir} </pre> then download unpack and install <tt>DPDUtils-00-00-09</tt> <pre> cd ${pa_dir} wget "http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/DPDUtils.tar.gz?view=tar&pathrev=DPDUtils-00-00-09" tar xfvz DPDUtils.tar.gz* rm DPDUtils.tar.gz* cd DPDUtils/cmt cmt config source setup.sh gmake </pre> and <tt>SUSYPhys/SUSYDPDMaker-00-00-04</tt> <pre> mkdir -p ${pa_dir}/SUSYPhys cd ${pa_dir}/SUSYPhys wget "http://atlas-sw.cern.ch/cgi-bin/viewcvs-atlas.cgi/offline/PhysicsAnalysis/SUSYPhys/SUSYDPDMaker.tar.gz?view=tar&pathrev=SUSYDPDMaker-00-00-04" tar xfvz SUSYDPDMaker.tar.gz* rm SUSYDPDMaker.tar.gz* cd SUSYDPDMaker/cmt cmt config source setup.sh gmake </pre> cbae0bdbea7c64f208cf2a2fa94373340e234e56 File:Stgenis appartment.png 6 150 327 2009-03-10T16:39:39Z Kka054 24 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ATLASSimulationCSCWalkThrough 0 151 339 2009-03-11T12:37:32Z Kka054 24 New page: %META:TOPICINFO{author="ThomasBurgess" date="1209575726" format="1.1" reprev="1.2" version="1.2"}% %META:TOPICPARENT{name="WebHome"}% %TOC% == Walkthrough: ATLAS simulation using the CSC ... wikitext text/x-wiki %META:TOPICINFO{author="ThomasBurgess" date="1209575726" format="1.1" reprev="1.2" version="1.2"}% %META:TOPICPARENT{name="WebHome"}% %TOC% == Walkthrough: ATLAS simulation using the CSC scripts == If you follow the AthenaKlientDriftWalkThrough you can run the examples in this guide. Various file types of are mentioned in this text: ;'''Ntuple''' :flat ntuples (usable directly in =root=) ;'''RDO''' '''''Raw Data Object''''' :What comes out of the simulation ;'''ESD''' '''''Event Summary Data''''' :Reconstructed '''RDO''' file, used to make '''AOD''' and for ;'''AOD''' '''''Analysis Object Data''''' :Summary of an ''''ESD''' file ;'''DPD''' '''''Derived Physics Data''''' :Analysis specific processed '''AOD''' In general the files are <tt>root</tt> files, but not directly usable in <tt>root</tt>. === Event generation === To generate events use the script <tt>csc_evgen_trf.py</tt> that generates events for a physics process defined in one of the <tt>jobOptions</tt> files located in <tt>$INSTALL/AtlasOffline/13.0.40/Generators/EvgenJobOptions/share</tt>. The script takes the following arguments #<tt>runNumber</tt> (int) #*each run number corresponds to one physics process #<tt>firstEvent</tt> (int) #*number of the first event in the output data file #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>randomSeed</tt> (int) #*random seed for physics generators #<tt>jobConfig</tt> (list) #*<tt>jobOptions</tt> fragment containing the physics and the configuration settings #<tt>outputEvgenFile</tt> (str) #*Output file that contains generated events #[ <tt>histogramFile</tt> ] (str) default='NONE' #*Output file that contains histograms. #[ <tt>ntupleFile</tt> ] (str) default='NONE' #*Output file that contains ntuples. #[ <tt>inputGeneratorFile</tt> ] (str) default='NONE' #*Input file used by the particle generator to generate events The following call generates a run with '''5000''' events for the process '''Z->tau,tau''' and will save the file <tt>005188.evgen.pool.root</tt>. <pre> csc_evgen_trf.py\ 005188 1 5000 1231243\ 'CSC.005188.A3_Ztautau_filter.py'\ '005188.evgen.pool.root' </pre> Note that the run-number must match the =jobOptions= file given. === <tt>Atlfast</tt> '''AOD''' generation === The script <tt>csc_atlfast_trf.py</tt> truns <tt>Atlfast</tt> and produces '''AOD'''s directly from the generated events. It takes the following arguments #<tt>inputEvgenFile</tt> (list) #*Input file that contains generated events #<tt>outputAODFile</tt> (str) #*Output file that contains '''AOD'''s #<tt>ntupleFile</tt> (str) #*Output file that contains ntuples. #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip To run on the file with generated events from the previous section run <pre> csc_atlfast_trf.py\ '005188.evgen.pool.root'\ '005188.atlfast.aod.pool.root'\ '005188.atlfast.nt.root'\ -1 0 </pre> The '''-1''' includes all events in the input file ==== Script that makes several runs of atlfast aod ==== The following <tt>bash</tt> script generates '''nruns''' of '''nevts''' events of the type specified in ''''jobops'''. <pre> nruns=10 nevts="10000" run="005188" jobops=CSC.005188.A3_Ztautau_filter.py for (( i=0; i<nruns; ++i)); do evgen=${nevts}.${i}.${run}.evgen.pool.root atlfast_aod=`echo ${evgen} | sed 's,evgen,atlfast.aod,'` atlfast_nt=`echo ${evgen} | sed 's,evgen,atlfast.nt,'` csc_evgen_trf.py ${run} 1 ${nevts} ${RANDOM} ${jobops} ${evgen} csc_atlfast_trf.py ${evgen} ${atlfast_aod} ${atlfast_nt} -1 0 done </pre> === Making '''ESD'''s '''AOD'''s using full ATLAS simulation === In these examples use the geometry definition <tt>ATLAS-CSC-01-02-00</tt> and the DEFAULT trigger. Remember that the '''Geant4''' step is very slow, run in a few events only until you know what you are doing. ==== '''GEANT4''' simulation and digitization ==== The script <tt>csc_simul_trf.py</tt> runs the '''GEANT4''' and digitization on the generated events and produces a '''HITS''' and a '''RDO''' file. It has the following options #<tt>inputEvgenFile</tt> (list) #*Input file that contains generated events #<tt>outputHitsFile</tt> (str) #*Output file that contains hits #<tt>outputRDOFile</tt> (str) #*Output file that contains RDO's #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>randomSeed</tt> (int) #*random seed for simulation #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>digiSeedOffset1</tt> (int) #*random seed offset for digitization #<tt>digiSeedOffset2</tt> (int) #*random seed offset for digitization #[ <tt>physicsList</tt> ] (str) default='QGSP_EMV' #*physics list to be used #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: .,SimuJobTransforms,PyJobTransforms #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use #[ <tt>triggerConfig</tt> ] (str) default='DEFAULT' #*Configuration string to use for =TrigT1= and =HLT=. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. Run the full detector simulation: <pre> csc_simul_trf.py\ '005188.evgen.pool.root'\ '005188.hits.pool.root'\ '005188.rdo.pool.root'\ -1 0 123\ 'ATLAS-CSC-01-02-00'\ 12 23 </pre> ==== Reconstruction - create an '''ESD''' ==== The reconstruction can be run using the following script <tt>csc_recoESD_trf.py</tt> which takes the '''RDO''' file from the simulation and produces an '''ESD''' file. The scripts has the following options #<tt>inputRDOFile</tt> (list) #*Input file that contains RDOs #<tt>outputESDFile</tt> (str) #*Output file that contains ESDs #<tt>ntupleFile</tt> (str) #*Output file that contains ntuples. #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>triggerConfig</tt> (str) #*Configuration string to use for <tt>TrigT1</tt> and <tt>HLT</tt>. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: RecJobTransforms, PyJobTransforms #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use To run on the simulated '''RDO''' file run <pre> csc_recoESD_trf.py\ '005188.rdo.pool.root'\ '005188.esd.pool.root'\ '005188.rdo.ntuple.pool.root'\ -1 0\ 'ATLAS-CSC-01-02-00'\ 'DEFAULT' </pre> ==== Create '''AOD''' from an '''ESD''' ==== The script <tt>csc_recoAOD_trf.py</tt> makes an '''AOD''' file from an '''ESD''' file. #<tt>inputESDFile</tt> (list) #*Input file that contains ESDs #<tt>outputAODFile</tt> (str) #*Output file that contains AODs #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>triggerConfig</tt> (str) #*Configuration string to use for <tt>TrigT1</tt> and <tt>HLT</tt>. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: <tt>RecJobTransforms</tt> , <tt>PyJobTransforms</tt> #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use Run like this <pre> csc_recoAOD_trf.py\ '005188.esd.pool.root'\ '005188.aod.pool.root'\ -1 0\ 'ATLAS-CSC-01-02-00'\ 'DEFAULT' </pre> [[User:Kka054|Kka054]] 13:37, 11 March 2009 (CET) d212954d4f749fe47e95645250c1e26553e6c7d0 340 2009-03-11T12:37:49Z Kka054 24 wikitext text/x-wiki == Walkthrough: ATLAS simulation using the CSC scripts == If you follow the AthenaKlientDriftWalkThrough you can run the examples in this guide. Various file types of are mentioned in this text: ;'''Ntuple''' :flat ntuples (usable directly in =root=) ;'''RDO''' '''''Raw Data Object''''' :What comes out of the simulation ;'''ESD''' '''''Event Summary Data''''' :Reconstructed '''RDO''' file, used to make '''AOD''' and for ;'''AOD''' '''''Analysis Object Data''''' :Summary of an ''''ESD''' file ;'''DPD''' '''''Derived Physics Data''''' :Analysis specific processed '''AOD''' In general the files are <tt>root</tt> files, but not directly usable in <tt>root</tt>. === Event generation === To generate events use the script <tt>csc_evgen_trf.py</tt> that generates events for a physics process defined in one of the <tt>jobOptions</tt> files located in <tt>$INSTALL/AtlasOffline/13.0.40/Generators/EvgenJobOptions/share</tt>. The script takes the following arguments #<tt>runNumber</tt> (int) #*each run number corresponds to one physics process #<tt>firstEvent</tt> (int) #*number of the first event in the output data file #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>randomSeed</tt> (int) #*random seed for physics generators #<tt>jobConfig</tt> (list) #*<tt>jobOptions</tt> fragment containing the physics and the configuration settings #<tt>outputEvgenFile</tt> (str) #*Output file that contains generated events #[ <tt>histogramFile</tt> ] (str) default='NONE' #*Output file that contains histograms. #[ <tt>ntupleFile</tt> ] (str) default='NONE' #*Output file that contains ntuples. #[ <tt>inputGeneratorFile</tt> ] (str) default='NONE' #*Input file used by the particle generator to generate events The following call generates a run with '''5000''' events for the process '''Z->tau,tau''' and will save the file <tt>005188.evgen.pool.root</tt>. <pre> csc_evgen_trf.py\ 005188 1 5000 1231243\ 'CSC.005188.A3_Ztautau_filter.py'\ '005188.evgen.pool.root' </pre> Note that the run-number must match the =jobOptions= file given. === <tt>Atlfast</tt> '''AOD''' generation === The script <tt>csc_atlfast_trf.py</tt> truns <tt>Atlfast</tt> and produces '''AOD'''s directly from the generated events. It takes the following arguments #<tt>inputEvgenFile</tt> (list) #*Input file that contains generated events #<tt>outputAODFile</tt> (str) #*Output file that contains '''AOD'''s #<tt>ntupleFile</tt> (str) #*Output file that contains ntuples. #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip To run on the file with generated events from the previous section run <pre> csc_atlfast_trf.py\ '005188.evgen.pool.root'\ '005188.atlfast.aod.pool.root'\ '005188.atlfast.nt.root'\ -1 0 </pre> The '''-1''' includes all events in the input file ==== Script that makes several runs of atlfast aod ==== The following <tt>bash</tt> script generates '''nruns''' of '''nevts''' events of the type specified in ''''jobops'''. <pre> nruns=10 nevts="10000" run="005188" jobops=CSC.005188.A3_Ztautau_filter.py for (( i=0; i<nruns; ++i)); do evgen=${nevts}.${i}.${run}.evgen.pool.root atlfast_aod=`echo ${evgen} | sed 's,evgen,atlfast.aod,'` atlfast_nt=`echo ${evgen} | sed 's,evgen,atlfast.nt,'` csc_evgen_trf.py ${run} 1 ${nevts} ${RANDOM} ${jobops} ${evgen} csc_atlfast_trf.py ${evgen} ${atlfast_aod} ${atlfast_nt} -1 0 done </pre> === Making '''ESD'''s '''AOD'''s using full ATLAS simulation === In these examples use the geometry definition <tt>ATLAS-CSC-01-02-00</tt> and the DEFAULT trigger. Remember that the '''Geant4''' step is very slow, run in a few events only until you know what you are doing. ==== '''GEANT4''' simulation and digitization ==== The script <tt>csc_simul_trf.py</tt> runs the '''GEANT4''' and digitization on the generated events and produces a '''HITS''' and a '''RDO''' file. It has the following options #<tt>inputEvgenFile</tt> (list) #*Input file that contains generated events #<tt>outputHitsFile</tt> (str) #*Output file that contains hits #<tt>outputRDOFile</tt> (str) #*Output file that contains RDO's #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>randomSeed</tt> (int) #*random seed for simulation #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>digiSeedOffset1</tt> (int) #*random seed offset for digitization #<tt>digiSeedOffset2</tt> (int) #*random seed offset for digitization #[ <tt>physicsList</tt> ] (str) default='QGSP_EMV' #*physics list to be used #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: .,SimuJobTransforms,PyJobTransforms #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use #[ <tt>triggerConfig</tt> ] (str) default='DEFAULT' #*Configuration string to use for =TrigT1= and =HLT=. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. Run the full detector simulation: <pre> csc_simul_trf.py\ '005188.evgen.pool.root'\ '005188.hits.pool.root'\ '005188.rdo.pool.root'\ -1 0 123\ 'ATLAS-CSC-01-02-00'\ 12 23 </pre> ==== Reconstruction - create an '''ESD''' ==== The reconstruction can be run using the following script <tt>csc_recoESD_trf.py</tt> which takes the '''RDO''' file from the simulation and produces an '''ESD''' file. The scripts has the following options #<tt>inputRDOFile</tt> (list) #*Input file that contains RDOs #<tt>outputESDFile</tt> (str) #*Output file that contains ESDs #<tt>ntupleFile</tt> (str) #*Output file that contains ntuples. #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>triggerConfig</tt> (str) #*Configuration string to use for <tt>TrigT1</tt> and <tt>HLT</tt>. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: RecJobTransforms, PyJobTransforms #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use To run on the simulated '''RDO''' file run <pre> csc_recoESD_trf.py\ '005188.rdo.pool.root'\ '005188.esd.pool.root'\ '005188.rdo.ntuple.pool.root'\ -1 0\ 'ATLAS-CSC-01-02-00'\ 'DEFAULT' </pre> ==== Create '''AOD''' from an '''ESD''' ==== The script <tt>csc_recoAOD_trf.py</tt> makes an '''AOD''' file from an '''ESD''' file. #<tt>inputESDFile</tt> (list) #*Input file that contains ESDs #<tt>outputAODFile</tt> (str) #*Output file that contains AODs #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>triggerConfig</tt> (str) #*Configuration string to use for <tt>TrigT1</tt> and <tt>HLT</tt>. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: <tt>RecJobTransforms</tt> , <tt>PyJobTransforms</tt> #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use Run like this <pre> csc_recoAOD_trf.py\ '005188.esd.pool.root'\ '005188.aod.pool.root'\ -1 0\ 'ATLAS-CSC-01-02-00'\ 'DEFAULT' </pre> [[User:Kka054|Kka054]] 13:37, 11 March 2009 (CET) c3fc455a4d388787dab7dee14463643c645ee9ae 341 2009-03-11T12:39:58Z Kka054 24 wikitext text/x-wiki == Walkthrough: ATLAS simulation using the CSC scripts == If you follow the AthenaKlientDriftWalkThrough you can run the examples in this guide. Various file types of are mentioned in this text: ;'''Ntuple''' :flat ntuples (usable directly in =root=) ;'''RDO''' '''''Raw Data Object''''' :What comes out of the simulation ;'''ESD''' '''''Event Summary Data''''' :Reconstructed '''RDO''' file, used to make '''AOD''' and for ;'''AOD''' '''''Analysis Object Data''''' :Summary of an ''''ESD''' file ;'''DPD''' '''''Derived Physics Data''''' :Analysis specific processed '''AOD''' In general the files are <tt>root</tt> files, but not directly usable in <tt>root</tt>. === Event generation === To generate events use the script <tt>csc_evgen_trf.py</tt> that generates events for a physics process defined in one of the <tt>jobOptions</tt> files located in <tt>$INSTALL/AtlasOffline/13.0.40/Generators/EvgenJobOptions/share</tt>. The script takes the following arguments #<tt>runNumber</tt> (int) #*each run number corresponds to one physics process #<tt>firstEvent</tt> (int) #*number of the first event in the output data file #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>randomSeed</tt> (int) #*random seed for physics generators #<tt>jobConfig</tt> (list) #*<tt>jobOptions</tt> fragment containing the physics and the configuration settings #<tt>outputEvgenFile</tt> (str) #*Output file that contains generated events #[ <tt>histogramFile</tt> ] (str) default='NONE' #*Output file that contains histograms. #[ <tt>ntupleFile</tt> ] (str) default='NONE' #*Output file that contains ntuples. #[ <tt>inputGeneratorFile</tt> ] (str) default='NONE' #*Input file used by the particle generator to generate events The following call generates a run with '''5000''' events for the process '''Z->tau,tau''' and will save the file <tt>005188.evgen.pool.root</tt>. <pre> csc_evgen_trf.py\ 005188 1 5000 1231243\ 'CSC.005188.A3_Ztautau_filter.py'\ '005188.evgen.pool.root' </pre> Note that the run-number must match the =jobOptions= file given. === <tt>Atlfast</tt> '''AOD''' generation === The script <tt>csc_atlfast_trf.py</tt> truns <tt>Atlfast</tt> and produces '''AOD'''s directly from the generated events. It takes the following arguments #<tt>inputEvgenFile</tt> (list) #*Input file that contains generated events #<tt>outputAODFile</tt> (str) #*Output file that contains '''AOD'''s #<tt>ntupleFile</tt> (str) #*Output file that contains ntuples. #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip To run on the file with generated events from the previous section run <pre> csc_atlfast_trf.py\ '005188.evgen.pool.root'\ '005188.atlfast.aod.pool.root'\ '005188.atlfast.nt.root'\ -1 0 </pre> The '''-1''' includes all events in the input file ==== Script that makes several runs of atlfast aod ==== The following <tt>bash</tt> script generates '''nruns''' of '''nevts''' events of the type specified in ''''jobops'''. <pre> nruns=10 nevts="10000" run="005188" jobops=CSC.005188.A3_Ztautau_filter.py for (( i=0; i<nruns; ++i)); do evgen=${nevts}.${i}.${run}.evgen.pool.root atlfast_aod=`echo ${evgen} | sed 's,evgen,atlfast.aod,'` atlfast_nt=`echo ${evgen} | sed 's,evgen,atlfast.nt,'` csc_evgen_trf.py ${run} 1 ${nevts} ${RANDOM} ${jobops} ${evgen} csc_atlfast_trf.py ${evgen} ${atlfast_aod} ${atlfast_nt} -1 0 done </pre> === Making '''ESD'''s '''AOD'''s using full ATLAS simulation === In these examples use the geometry definition <tt>ATLAS-CSC-01-02-00</tt> and the DEFAULT trigger. Remember that the '''Geant4''' step is very slow, run in a few events only until you know what you are doing. ==== '''GEANT4''' simulation and digitization ==== The script <tt>csc_simul_trf.py</tt> runs the '''GEANT4''' and digitization on the generated events and produces a '''HITS''' and a '''RDO''' file. It has the following options #<tt>inputEvgenFile</tt> (list) #*Input file that contains generated events #<tt>outputHitsFile</tt> (str) #*Output file that contains hits #<tt>outputRDOFile</tt> (str) #*Output file that contains RDO's #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>randomSeed</tt> (int) #*random seed for simulation #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>digiSeedOffset1</tt> (int) #*random seed offset for digitization #<tt>digiSeedOffset2</tt> (int) #*random seed offset for digitization #[ <tt>physicsList</tt> ] (str) default='QGSP_EMV' #*physics list to be used #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: .,SimuJobTransforms,PyJobTransforms #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use #[ <tt>triggerConfig</tt> ] (str) default='DEFAULT' #*Configuration string to use for =TrigT1= and =HLT=. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. Run the full detector simulation: <pre> csc_simul_trf.py\ '005188.evgen.pool.root'\ '005188.hits.pool.root'\ '005188.rdo.pool.root'\ -1 0 123\ 'ATLAS-CSC-01-02-00'\ 12 23 </pre> ==== Reconstruction - create an '''ESD''' ==== The reconstruction can be run using the following script <tt>csc_recoESD_trf.py</tt> which takes the '''RDO''' file from the simulation and produces an '''ESD''' file. The scripts has the following options #<tt>inputRDOFile</tt> (list) #*Input file that contains RDOs #<tt>outputESDFile</tt> (str) #*Output file that contains ESDs #<tt>ntupleFile</tt> (str) #*Output file that contains ntuples. #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>triggerConfig</tt> (str) #*Configuration string to use for <tt>TrigT1</tt> and <tt>HLT</tt>. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: RecJobTransforms, PyJobTransforms #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use To run on the simulated '''RDO''' file run <pre> csc_recoESD_trf.py\ '005188.rdo.pool.root'\ '005188.esd.pool.root'\ '005188.rdo.ntuple.pool.root'\ -1 0\ 'ATLAS-CSC-01-02-00'\ 'DEFAULT' </pre> ==== Create '''AOD''' from an '''ESD''' ==== The script <tt>csc_recoAOD_trf.py</tt> makes an '''AOD''' file from an '''ESD''' file. #<tt>inputESDFile</tt> (list) #*Input file that contains ESDs #<tt>outputAODFile</tt> (str) #*Output file that contains AODs #<tt>maxEvents</tt> (int) #*Maximum number of events to process #<tt>skipEvents</tt> (int) #*Number of events to skip #<tt>geometryVersion</tt> (str) #*Geometry Version #<tt>triggerConfig</tt> (str) #*Configuration string to use for <tt>TrigT1</tt> and <tt>HLT</tt>. Set to 'NONE' to switch off trigger, and set to 'DEFAULT' to use the default of the used release. #[ <tt>jobConfig</tt> ] (list) default='NONE' #*Joboptions file with user settings, in particular the configuration settings. Default packages: <tt>RecJobTransforms</tt> , <tt>PyJobTransforms</tt> #[ <tt>DBRelease</tt> ] (str) default='NONE' #*Tarball containing the DBRelease to use Run like this <pre> csc_recoAOD_trf.py\ '005188.esd.pool.root'\ '005188.aod.pool.root'\ -1 0\ 'ATLAS-CSC-01-02-00'\ 'DEFAULT' </pre> [[User:Kka054|Kka054]] 13:37, 11 March 2009 (CET) a253d358404649240cc69afe5b9fbce8771ed57a Modelsim/Questa 0 33 350 2009-03-11T13:57:29Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /prog/altera/vhdl/apex20ke [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDl]] [[Category:Mikroelektronikk]] 9a6421a86e76dc945f33c8f799d9904de6c939db Synthese av VHDL 0 36 351 2009-03-11T14:42:29Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 6bf2a8caf0e4dface9db3c7778482ffe7df9502f 352 2009-03-11T14:43:48Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/quartus6.0 </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 0a62e906611e0d6eaaffef47199a8d8e339dd791 354 2009-03-11T14:57:36Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/quartus6.0 </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] dbf73dd0e2fc1bb848f292904bc9ad4558a26247 370 2009-03-15T20:23:21Z St12361 17 Corrected to run properly under QuestaSim v.6.4a wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/quartus6.0 </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 8405e139ca0646030944c4b37a295730c1700fd5 3D Detector Activities 0 23 353 2009-03-11T14:48:56Z Hsa061 18 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, Kristine, ... ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] 4f5b8d7bfa85ad98ea882d5f1eb5920cd13b9616 Main Page 0 1 355 2009-03-12T07:34:57Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til Institutt for Fysikk og Teknologis Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] ce144a4d73b2dcb4bf9537d3fd7f93fdfc2a277d 368 2009-03-13T07:43:12Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til [http:/www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] d88b2e89420fbb72bacd59498bb428f1bf6337d3 369 2009-03-13T07:43:45Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 68166c48bdaea44d6eed6e617075e6cea17123a6 Få tilgang til å opprette eller redigere sider i wikien 0 154 356 2009-03-12T07:50:45Z Nfyku 4 New page: IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte ... wikitext text/x-wiki IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte sysops-rettigheter for å kunne opprette eller redigere sider. Noen bruker (Bureaucrats) kan gi slike rettigheter. Ta kontakt med noen av dem hvis du trenger editeringsrettigheter: Dominik Fehlker ---- <references/> 298d05d03e07fbfa4df67461623a7acb54dad698 357 2009-03-12T07:56:20Z Nfyku 4 wikitext text/x-wiki IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte sysops-rettigheter for å kunne opprette eller redigere sider. Noen brukere (Bureaucrats) kan gi slike rettigheter. Ta kontakt med en av dem hvis du trenger editeringsrettigheter. Husk å logge inn før du spør om slike rettigheter. * Dominik Fehlker * Kjetil Ullaland * Nikolai Østgård * Thomas Burgess ---- <references/> 177eb2601aad05a21395738365f438f72a26f5b1 363 2009-03-12T08:05:07Z Nfyku 4 wikitext text/x-wiki IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte sysops-rettigheter for å kunne opprette eller redigere sider. Noen brukere (Bureaucrats) kan gi slike rettigheter. Ta kontakt med en av dem hvis du trenger editeringsrettigheter. Husk å logge inn før du spør om slike rettigheter. * [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] * [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] * [http://www.uib.no/personer/Nikolai.Ostgaard Nikolai Østgaard] * Thomas Burgess ---- <references/> bc5b9e7cb0813e7c49e75c9b715b21bc84720f52 365 2009-03-12T08:34:50Z Nfyku 4 wikitext text/x-wiki IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte sysops-rettigheter for å kunne opprette eller redigere sider. Noen brukere (Bureaucrats) kan gi slike rettigheter. Ta kontakt med en av dem hvis du trenger editeringsrettigheter. Husk å logge inn før du spør om slike rettigheter. * [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] * [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] * [http://www.uib.no/personer/Nikolai.Ostgaard Nikolai Østgaard] * [[User:Tbu082|Thomas Burgess]] ---- <references/> 8ef23bb84f0e7003dc5b11b8c4791301a23c8729 366 2009-03-12T08:50:00Z Nfyku 4 wikitext text/x-wiki IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte sysops-rettigheter for å kunne opprette eller redigere sider. Noen brukere (Bureaucrats) kan gi slike rettigheter. Ta kontakt med en av dem hvis du trenger editeringsrettigheter. Husk å logge inn før du spør om slike rettigheter. * [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] * [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] * [http://www.uib.no/personer/Nikolai.Ostgaard Nikolai Østgaard] * [[User:Tbu082|Thomas Burgess]] ---- <references/> 8de1bc248adf9fe3e34483af4744ad78d655f85b File:Analysis 1203.pdf 6 155 358 2009-03-12T07:57:49Z Kka054 24 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 PET Project 0 22 362 2009-03-12T08:04:26Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === [[Image:MAPD_radiotracer.JPG‎|frame|right|200px|Fluorodeoxyglucose-FDG]] [[Image:MAPD_positronelectronannihilation.JPG‎‎|frame|left|200px|Positron - Electron Annihilation]] The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === [[Image:MAPD_crystaltransition.JPG‎ |frame|left|200px|Electronic transition in a crystal]] A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === [[Image:MAPD_coincidenceprinciple.JPG‎ |frame|none|200px|Coincidence detection principle]] In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. [[Image:MAPD_coincidencecategories.JPG|frame||200px|3 different coincidence detection events]] * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. [[Image:MAPD tofprinciple.jpg‎ |frame|none|200px|Time of flight principle]] [[Image:MAPD tofprinciple2.JPG|frame|none|200px|Time of flight principle]] == Technology == === Avalanche Photodiodes === [[Image:MAPD structure.jpg‎|frame|right|200px|Structure of MAPD]] An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. [[Image:MAPD proportionalmode.jpg‎ ‎|frame|right|200px|proportional mode]] * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. [[Image:MAPD geigermode.jpg‎‎|frame|right|200px|Geiger mode]] [[Image:MAPD_passivequenching.jpg‎‎|frame|right|200px|passive quenching]] The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. == Characterisation Cell == == Characterisation setup and results == == [[Photomultipliers]] == [[User:Dfe002|Dominik]] 09:04, 12 March 2009 (CET) [[Category:Detector lab]] 69f49c1061d4f8fa0970a08049a5664e3abfadcb User:Nfyku 2 156 367 2009-03-12T08:50:23Z Nfyku 4 New page: [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] wikitext text/x-wiki [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] 0af0e2e1effe30899a80d71ce85838af2bb1a172 ParticlePhysicsGroupMeetings 0 139 371 2009-03-17T10:30:00Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] 3bf432d60fc8fe00d8544978f365ae1af8293649 Mini parallab workshop, March 19, 2009 0 157 372 2009-03-17T10:33:08Z Tbu082 19 New page: == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What i... wikitext text/x-wiki == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using dq2 * Using root in a job * Using athena in a job * Compiling an athena module in a job 158a53477d03c47b315c3edef32a714493b0b00f 373 2009-03-17T10:44:30Z Tbu082 19 wikitext text/x-wiki == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using dq2 * Using root in a job * Using athena in a job * Compiling an athena module in a job == Evo connection information == Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Central European Time 2009-03-18 12:00-15:00 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl - Phone Bridge ID: 863906 Password: 0686 - Switzerland (CERN, Geneva) +41 22 76 71400 f8c9a49bb4e21ec544ee63bb8fa64e23aa2d7a26 Mini parallab workshop, March 19, 2009 0 157 374 2009-03-17T10:50:53Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using dq2 * Using root in a job * Using athena in a job * Compiling an athena module in a job == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Central European Time 2009-03-18 12:00-15:00 Meeting Access Information: - Meeting URL http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl - Phone Bridge ID: 863906 Password: 0686 - Switzerland (CERN, Geneva) +41 22 76 71400 f9b83c3382e75e2c2bfd6de6db73e94270b4eb5c 375 2009-03-17T10:54:18Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using dq2 * Using root in a job * Using athena in a job * Compiling an athena module in a job == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> a2b2b78b8c5b66110ea0923d26411a47696fd5ee 377 2009-03-18T11:34:52Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/f/f6/FimmWorkshop18.03.09.pdf == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using dq2 * Using root in a job * Using athena in a job * Compiling an athena module in a job == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> ff4b503b34ecf16cf52290bead8b0a7a9336c981 379 2009-03-18T12:36:31Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/f/f6/FimmWorkshop18.03.09v2.pdf == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using dq2 * Using root in a job * Using athena in a job * Compiling an athena module in a job == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics, Computing]] f8de0310301e4708ce182a8f569759282cca16ad 380 2009-03-18T12:36:49Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/f/f6/FimmWorkshop18.03.09v2.pdf == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using dq2 * Using root in a job * Using athena in a job * Compiling an athena module in a job == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] ddff58ac9a34a63036b4c75c8602a820ae2e6917 381 2009-03-18T12:42:43Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 58e54df201949fc3a004caa991914a725911664b 421 381 2009-04-24T10:45:54Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 1) /work/atlas was broken by some cleaning script! for now use /work2/atlas instead 2) I have removed the old atlas installations, we now use the grid installations * to see what versions are available use sh /work2/atlas/install_scripts/list_athena_release.sh (current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) * to get an athena environment use source /work2/atlas/install_scripts/setup_athena.sh version (where version is one in the previous list) * to get a work area use source /work2/atlas/install_scripts/setup_athena_workarea.sh 3) for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm 4) make sure everyone can see your files, please run the following commands chown -R ${USER}:atlasuib /work/${USER} /work2/${USER} chmod -R g+r /work/${USER} /work2/${USER} and in case you have something in /workX/users/ do the same for these files 5) With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome ssh -X ${USER}@fimm.bccs.uib.no qsub -I -X (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3 source /work2/atlas/install_scripts/setup_athena_workarea.sh and in the prompt run either atlantis or vp1 == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] daf7a348ce5071238120483c2a016bb2007f60b8 423 421 2009-04-24T11:40:43Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre>sh /work2/atlas/install_scripts/list_athena_release.sh (current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) </pre> #* to get an athena environment use <pre> source /work2/atlas/install_scripts/setup_athena.sh version </pre> (where version is one in the previous list) #* to get a work area use <pre> source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre> chown -R ${USER}:atlasuib /work/${USER} /work2/${USER} chmod -R g+r /work/${USER} /work2/${USER} </pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files 5) With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre> ssh -X ${USER}@fimm.bccs.uib.no qsub -I -X </pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre> source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3 source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 4464eb9eaa8a43ef1f7d1750c7e0f66ee086fa51 424 423 2009-04-24T11:41:11Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre> sh /work2/atlas/install_scripts/list_athena_release.sh </pre> (current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) </pre> #* to get an athena environment use <pre> source /work2/atlas/install_scripts/setup_athena.sh version </pre> (where version is one in the previous list) #* to get a work area use <pre> source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre> chown -R ${USER}:atlasuib /work/${USER} /work2/${USER} chmod -R g+r /work/${USER} /work2/${USER} </pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files 5) With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre> ssh -X ${USER}@fimm.bccs.uib.no qsub -I -X </pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre> source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3 source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 4054963508684c93dfc8ef0dce587f45aa730e49 425 424 2009-04-24T11:41:41Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre> sh /work2/atlas/install_scripts/list_athena_release.sh </pre> (current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre> source /work2/atlas/install_scripts/setup_athena.sh version </pre> (where version is one in the previous list) #* to get a work area use <pre> source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre> chown -R ${USER}:atlasuib /work/${USER} /work2/${USER} chmod -R g+r /work/${USER} /work2/${USER} </pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files 5) With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre> ssh -X ${USER}@fimm.bccs.uib.no qsub -I -X </pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre> source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3 source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] fc0cbd37ac99b164559262f461632dbe8d5a5625 426 425 2009-04-24T11:42:47Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use #:<pre> sh /work2/atlas/install_scripts/list_athena_release.sh </pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre> source /work2/atlas/install_scripts/setup_athena.sh version </pre> (where version is one in the previous list) #* to get a work area use <pre> source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre> chown -R ${USER}:atlasuib /work/${USER} /work2/${USER} chmod -R g+r /work/${USER} /work2/${USER} </pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files 5) With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre> ssh -X ${USER}@fimm.bccs.uib.no qsub -I -X </pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre> source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3 source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 6c63115bd44cfa27e21006e073436c07b68f27c2 427 426 2009-04-24T11:43:26Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre>sh /work2/atlas/install_scripts/list_athena_release.sh</pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre> source /work2/atlas/install_scripts/setup_athena.sh version </pre> (where version is one in the previous list) #* to get a work area use <pre> source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre> chown -R ${USER}:atlasuib /work/${USER} /work2/${USER} chmod -R g+r /work/${USER} /work2/${USER} </pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files 5) With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre> ssh -X ${USER}@fimm.bccs.uib.no qsub -I -X </pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre> source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3 source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 56382c439b61494a82382baf37ec5de1488363c0 428 427 2009-04-24T11:44:07Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre>sh /work2/atlas/install_scripts/list_athena_release.sh</pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre>source /work2/atlas/install_scripts/setup_athena.sh version</pre> (where version is one in the previous list) #* to get a work area use <pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands<pre> chown -R ${USER}:atlasuib /work/${USER} /work2/${USER} chmod -R g+r /work/${USER} /work2/${USER}</pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files 5) With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre> ssh -X ${USER}@fimm.bccs.uib.no qsub -I -X </pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre> source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3 source /work2/atlas/install_scripts/setup_athena_workarea.sh </pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] c7e78f0911bf7a84f7cd2b4b6e659d8128506ab9 File:FimmWorkshop18.03.09.pdf 6 158 376 2009-03-18T11:34:24Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:FimmWorkshop18.03.09v2.pdf 6 159 378 2009-03-18T12:35:53Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Particle Physics group 0 137 382 2009-03-18T14:32:43Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[Tutorial]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) 50e59b6ccdd9153e1c9cc6acdd558eb4c01f7f93 383 2009-03-18T14:32:57Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] c0a5d53a51513412b108f0c4eefe124d0e8b5179 384 2009-03-18T14:33:16Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 82d2ad7680c1e660238a0bd8043a6a40828a2b22 385 2009-03-18T14:33:33Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 7fb7ec1846d774e89fca41dbd82616ac813a2604 405 2009-04-12T20:32:38Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] e015551131afecc6ca797b25b4a07ede8df69aa7 ATLASTutorials 0 160 386 2009-03-18T14:39:11Z Tbu082 19 New page: == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collabor... wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial a9e9f3f5e6a6cd3fb3ddc347c78c3652a703162b 387 2009-03-18T14:39:34Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial [[Category:Particle Physics]] 7700228f5c70be161e1b649014eabab07e71d03d 388 2009-03-18T14:42:42Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] 94b1b999c0373370bcc3312a59a1bb0652405c08 389 2009-03-18T14:49:39Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] 0d2ff629e357f368ab924fd3f67b9f443167047e 390 2009-03-18T15:16:04Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class ** Using svn / cvs * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions ** ssh / scp usage * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] 3edd0bad2e3278723d524c6743f7d6fad7775790 416 390 2009-04-24T10:43:19Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[TutorialUpdate]] (relevant changes since the last tutorial) == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class ** Using svn / cvs * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions ** ssh / scp usage * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] e7f0850ae4fe2c2648384501779a034bb577aa23 417 416 2009-04-24T10:43:29Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[TutorialUpdate]] (relevant changes since the last tutorial) == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class ** Using svn / cvs * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions ** ssh / scp usage * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] da817fe122a3447cf97fe1f1b2b33d16e3aaf7c9 418 417 2009-04-24T10:44:06Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] also read the [[TutorialUpdate190309]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class ** Using svn / cvs * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions ** ssh / scp usage * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] 65333ea7f43762fb2908bd02ceea4ea76644177b 422 418 2009-04-24T10:46:15Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class ** Using svn / cvs * Linux/Shell scripting ** Some useful Linux commands *** bc, sed, awk, grep ** Common problems and solutions ** ssh / scp usage * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] b0ace864b678750c9516a5bd61c0de94fbc0f31f Detector lab 0 21 391 2009-03-19T09:58:45Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The laboratory is situated in the 3rd floor at the IFT, room 332. == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] f57e81118bc1f6d2de5b2d5cc6f7a922dc81beaa Synthese av VHDL 0 36 392 2009-03-20T15:10:32Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/quartus8.1/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). Vi må ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, ellers vil ikkje simuleringa virka. På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi(husk å kompilere i rett rekkefølge med compileorder->autogenerate) filene. ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] dc61c2bd6a143c0e8ddc08275346bbee3114e2d6 393 2009-03-20T15:44:19Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/quartus6.0 </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). ''NB. Kompilatoren feilar hvis vi har beheld entity deklarasjonen i begge filane som skal inkluderast i testbenken. Dette kan vi løyse enten ved å ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, eller ved å fjerne enitity deklarasjonen i den opprinnelige koden.'' ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 10020e8825c668cbac4f90e145be74431836adfb 394 2009-03-20T15:46:42Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å synthisiere vhdl kode. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/quartus6.0 </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). ''NB. Simulatoren feilar hvis vi har beheld entity deklarasjonen i begge filane som skal inkluderast i testbenken. Dette kan vi løyse enten ved å ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, eller ved å fjerne enitity deklarasjonen i den opprinnelige koden.'' ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til add_sub_alu.vho=== <pre> -- Copyright (C) 1991-2005 Altera Corporation -- Any megafunction design, and related netlist (encrypted or decrypted), -- support information, device programming or simulation file, and any other -- associated documentation or information provided by Altera or a partner -- under Altera's Megafunction Partnership Program may be used only -- to program PLD devices (but not masked PLD devices) from Altera. Any -- other use of such megafunction design, netlist, support information, -- device programming or simulation file, or any other related documentation -- or information is prohibited for any other purpose, including, but not -- limited to modification, reverse engineering, de-compiling, or use with -- any other silicon devices, unless such use is explicitly licensed under -- a separate agreement with Altera or a megafunction partner. Title to the -- intellectual property, including patents, copyrights, trademarks, trade -- secrets, or maskworks, embodied in any such megafunction design, netlist, -- support information, device programming or simulation file, or any other -- related documentation or information provided by Altera or a megafunction -- partner, remains with Altera, the megafunction partner, or their respective -- licensors. No other licenses, including any licenses needed under any third -- party's intellectual property, are provided herein. -- VENDOR "Altera" -- PROGRAM "Quartus II" -- VERSION "Version 4.2 Build 178 01/19/2005 Service Pack 1 SJ Full Version" -- DATE "02/18/2005 13:34:52" -- -- Device: Altera EP20K200EQC208-1 Package PQFP208 -- -- -- This VHDL file should be used for MODELSIM (VHDL OUTPUT FROM QUARTUS II) only -- LIBRARY IEEE, apex20ke; USE IEEE.std_logic_1164.all; USE apex20ke.apex20ke_components.all; ENTITY add_sub_alu_synt IS PORT ( enable : IN std_logic; clk : IN std_logic; do_hold : IN std_logic; rst : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; enable_in : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); start : IN std_logic; data_out : OUT std_logic_vector(3 DOWNTO 0) ); END add_sub_alu_synt; ARCHITECTURE structure OF add_sub_alu_synt IS SIGNAL gnd : std_logic := '0'; SIGNAL vcc : std_logic := '1'; SIGNAL devclrn : std_logic := '1'; SIGNAL devpor : std_logic := '1'; SIGNAL devoe : std_logic := '0'; SIGNAL ww_enable : std_logic; SIGNAL ww_clk : std_logic; SIGNAL ww_do_hold : std_logic; SIGNAL ww_rst : std_logic; SIGNAL ww_do_add : std_logic; SIGNAL ww_do_subtract : std_logic; SIGNAL ww_enable_in : std_logic; SIGNAL ww_data_in : std_logic_vector(3 DOWNTO 0); SIGNAL ww_start : std_logic; SIGNAL ww_data_out : std_logic_vector(3 DOWNTO 0); SIGNAL if0a5x13_aCOMBOUT : std_logic; SIGNAL start_acombout : std_logic; SIGNAL data_in_a2_a_acombout : std_logic; SIGNAL do_subtract_acombout : std_logic; SIGNAL do_hold_acombout : std_logic; SIGNAL n5831x3 : std_logic; SIGNAL do_add_acombout : std_logic; SIGNAL n5831x2 : std_logic; SIGNAL clk_acombout : std_logic; SIGNAL rst_acombout : std_logic; SIGNAL n544cx3 : std_logic; SIGNAL n544cx2 : std_logic; SIGNAL state_var_1 : std_logic; SIGNAL data_in_a0_a_acombout : std_logic; SIGNAL enable_in_acombout : std_logic; SIGNAL latched_data_in_0 : std_logic; SIGNAL nfc54x2 : std_logic; SIGNAL cin : std_logic; SIGNAL a_2_dup_240 : std_logic; SIGNAL nf0a5x2 : std_logic; SIGNAL reg_0 : std_logic; SIGNAL enable_acombout : std_logic; SIGNAL data_in_a1_a_acombout : std_logic; SIGNAL latched_data_in_1 : std_logic; SIGNAL nf0a5x8 : std_logic; SIGNAL nf0a5x10 : std_logic; SIGNAL nf0a5x9 : std_logic; SIGNAL a_2_dup_239 : std_logic; SIGNAL reg_1 : std_logic; SIGNAL latched_data_in_2 : std_logic; SIGNAL nf0a5x6 : std_logic; SIGNAL nf0a5x7 : std_logic; SIGNAL a_2_dup_238 : std_logic; SIGNAL reg_2 : std_logic; SIGNAL data_in_a3_a_acombout : std_logic; SIGNAL latched_data_in_3 : std_logic; SIGNAL nf0a5x4 : std_logic; SIGNAL nf0a5x5 : std_logic; SIGNAL a_2 : std_logic; SIGNAL reg_3 : std_logic; SIGNAL ALT_INV_rst_acombout : std_logic; BEGIN ww_enable <= enable; ww_clk <= clk; ww_do_hold <= do_hold; ww_rst <= rst; ww_do_add <= do_add; ww_do_subtract <= do_subtract; ww_enable_in <= enable_in; ww_data_in <= data_in; ww_start <= start; data_out <= ww_data_out; ALT_INV_rst_acombout <= NOT rst_acombout; start_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_start, combout => start_acombout); data_in_ibuf_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(2), combout => data_in_a2_a_acombout); do_subtract_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_subtract, combout => do_subtract_acombout); do_hold_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_hold, combout => do_hold_acombout); ib0e1x3 : apex20ke_lcell -- Equation(s): -- n5831x3 = do_hold_acombout & state_var_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datac => do_hold_acombout, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x3); do_add_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_do_add, combout => do_add_acombout); ib0e1x2 : apex20ke_lcell -- Equation(s): -- n5831x2 = n544cx3 & state_var_1 & !do_subtract_acombout # !state_var_1 & !start_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "3050", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => start_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n5831x2); clk_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_clk, combout => clk_acombout); rst_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_rst, combout => rst_acombout); reg_state_var_0 : apex20ke_lcell -- Equation(s): -- n544cx3 = DFFE(n5831x3 # n5831x2 # !n544cx3 & do_add_acombout, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FFDC", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => n544cx3, datab => n5831x3, datac => do_add_acombout, datad => n5831x2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => n544cx3); ib0e2x3 : apex20ke_lcell -- Equation(s): -- n544cx2 = !n544cx3 & !state_var_1 & do_add_acombout # do_subtract_acombout -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "000E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => do_add_acombout, datab => do_subtract_acombout, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => n544cx2); reg_state_var_1 : apex20ke_lcell -- Equation(s): -- state_var_1 = DFFE(n544cx2 # !do_hold_acombout & state_var_1, GLOBAL(clk_acombout), GLOBAL(rst_acombout), , ) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FF50", output_mode => "reg_only") -- pragma translate_on PORT MAP ( dataa => do_hold_acombout, datac => state_var_1, datad => n544cx2, clk => clk_acombout, aclr => ALT_INV_rst_acombout, devclrn => devclrn, devpor => devpor, regout => state_var_1); data_in_ibuf_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(0), combout => data_in_a0_a_acombout); enable_in_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable_in, combout => enable_in_acombout); id8dfx3 : apex20ke_lcell -- Equation(s): -- latched_data_in_0 = enable_in_acombout & data_in_a0_a_acombout # !enable_in_acombout & latched_data_in_0 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CACA", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => latched_data_in_0, datab => data_in_a0_a_acombout, datac => enable_in_acombout, devclrn => devclrn, devpor => devpor, combout => latched_data_in_0); id8dfx2 : apex20ke_lcell -- Equation(s): -- nfc54x2 = latched_data_in_0 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_0, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nfc54x2); id8dfx1 : apex20ke_lcell -- Equation(s): -- cin = state_var_1 & !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "00CC", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => cin); ifc54x2 : apex20ke_lcell -- Equation(s): -- a_2_dup_240 = nfc54x2 $ reg_0 $ cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C33C", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => nfc54x2, datac => reg_0, datad => cin, devclrn => devclrn, devpor => devpor, combout => a_2_dup_240); i197dx1 : apex20ke_lcell -- Equation(s): -- nf0a5x2 = state_var_1 # !n544cx3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CCFF", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x2); reg_reg_0 : apex20ke_lcell -- Equation(s): -- reg_0 = DFFE(a_2_dup_240 & state_var_1, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => a_2_dup_240, datad => state_var_1, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_0); enable_ibuf : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_enable, combout => enable_acombout); data_in_ibuf_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(1), combout => data_in_a1_a_acombout); i2456x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_1 = enable_in_acombout & data_in_a1_a_acombout # !enable_in_acombout & latched_data_in_1 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "CFC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => data_in_a1_a_acombout, datac => enable_in_acombout, datad => latched_data_in_1, devclrn => devclrn, devpor => devpor, combout => latched_data_in_1); i2456x1 : apex20ke_lcell -- Equation(s): -- nf0a5x8 = latched_data_in_1 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_1, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x8); if0a5x14 : apex20ke_lcell -- Equation(s): -- nf0a5x10 = reg_0 & nfc54x2 # cin # !reg_0 & nfc54x2 & cin -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "FCC0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => reg_0, datac => nfc54x2, datad => cin, devclrn => devclrn, devpor => devpor, combout => nf0a5x10); if0a5x13 : apex20ke_lcell -- Equation(s): -- nf0a5x9 = CARRY(nf0a5x10) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", packed_mode => "false", lut_mask => "00CC", output_mode => "none") -- pragma translate_on PORT MAP ( datab => nf0a5x10, devclrn => devclrn, devpor => devpor, cout => nf0a5x9); if0a5x10 : apex20ke_lcell -- Equation(s): -- a_2_dup_239 = reg_1 $ nf0a5x8 $ nf0a5x9 -- nf0a5x7 = CARRY(reg_1 & !nf0a5x8 & !nf0a5x9 # !reg_1 & !nf0a5x9 # !nf0a5x8) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "9617", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_1, datab => nf0a5x8, cin => nf0a5x9, devclrn => devclrn, devpor => devpor, combout => a_2_dup_239, cout => nf0a5x7); reg_reg_1 : apex20ke_lcell -- Equation(s): -- reg_1 = DFFE(state_var_1 & a_2_dup_239, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_239, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_1); ia9f8x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_2 = enable_in_acombout & data_in_a2_a_acombout # !enable_in_acombout & latched_data_in_2 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "AFA0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => data_in_a2_a_acombout, datac => enable_in_acombout, datad => latched_data_in_2, devclrn => devclrn, devpor => devpor, combout => latched_data_in_2); ia9f8x1 : apex20ke_lcell -- Equation(s): -- nf0a5x6 = latched_data_in_2 $ (!state_var_1 # !n544cx3) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C333", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => latched_data_in_2, datac => n544cx3, datad => state_var_1, devclrn => devclrn, devpor => devpor, combout => nf0a5x6); if0a5x7 : apex20ke_lcell -- Equation(s): -- a_2_dup_238 = reg_2 $ nf0a5x6 $ !nf0a5x7 -- nf0a5x5 = CARRY(reg_2 & nf0a5x6 # !nf0a5x7 # !reg_2 & nf0a5x6 & !nf0a5x7) -- pragma translate_off GENERIC MAP ( operation_mode => "arithmetic", cin_used => "true", packed_mode => "false", lut_mask => "698E", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_2, datab => nf0a5x6, cin => nf0a5x7, devclrn => devclrn, devpor => devpor, combout => a_2_dup_238, cout => nf0a5x5); reg_reg_2 : apex20ke_lcell -- Equation(s): -- reg_2 = DFFE(state_var_1 & a_2_dup_238, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2_dup_238, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_2); data_in_ibuf_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "input", reg_source_mode => "none", feedback_mode => "from_pin", power_up => "low") -- pragma translate_on PORT MAP ( devclrn => devclrn, devpor => devpor, devoe => devoe, oe => GND, ena => VCC, padio => ww_data_in(3), combout => data_in_a3_a_acombout); ia9f5x2 : apex20ke_lcell -- Equation(s): -- latched_data_in_3 = enable_in_acombout & data_in_a3_a_acombout # !enable_in_acombout & latched_data_in_3 -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F5A0", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => enable_in_acombout, datac => data_in_a3_a_acombout, datad => latched_data_in_3, devclrn => devclrn, devpor => devpor, combout => latched_data_in_3); ia9f5x1 : apex20ke_lcell -- Equation(s): -- nf0a5x4 = latched_data_in_3 $ (!n544cx3 # !state_var_1) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "C30F", output_mode => "comb_only") -- pragma translate_on PORT MAP ( datab => state_var_1, datac => latched_data_in_3, datad => n544cx3, devclrn => devclrn, devpor => devpor, combout => nf0a5x4); if0a5x4 : apex20ke_lcell -- Equation(s): -- a_2 = reg_3 $ (nf0a5x5 $ nf0a5x4) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", cin_used => "true", packed_mode => "false", lut_mask => "A55A", output_mode => "comb_only") -- pragma translate_on PORT MAP ( dataa => reg_3, datad => nf0a5x4, cin => nf0a5x5, devclrn => devclrn, devpor => devpor, combout => a_2); reg_reg_3 : apex20ke_lcell -- Equation(s): -- reg_3 = DFFE(state_var_1 & a_2, GLOBAL(clk_acombout), , , nf0a5x2) -- pragma translate_off GENERIC MAP ( operation_mode => "normal", packed_mode => "false", lut_mask => "F000", output_mode => "reg_only") -- pragma translate_on PORT MAP ( datac => state_var_1, datad => a_2, clk => clk_acombout, ena => nf0a5x2, devclrn => devclrn, devpor => devpor, regout => reg_3); tri_data_out_0 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_0, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(0)); tri_data_out_1 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_1, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(1)); tri_data_out_2 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_2, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(2)); tri_data_out_3 : apex20ke_io -- pragma translate_off GENERIC MAP ( operation_mode => "output", reg_source_mode => "none", feedback_mode => "none", power_up => "low") -- pragma translate_on PORT MAP ( datain => reg_3, oe => enable_acombout, devclrn => devclrn, devpor => devpor, devoe => devoe, ena => VCC, padio => ww_data_out(3)); END structure; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 34e2a6cf70b8111604d8e5d98e1877bfd8bfc8f6 Lab Equipment 0 111 395 2009-03-30T12:37:37Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |TTi EL155 |15V, 5A linear DC power supply | |- |TTi EL302D |30V, 2A dual linear DC power supply | |- |TTi QL355TP |15V, 5A | 35V, 3A | 35V, 0,5A + Aux, dual DC power supply | |- |TTi QPX1200 |60V, 50A linear DC power supply | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} 529d0e6b4157da5af3fd9ad30e427c8e21b1726b 396 2009-03-30T12:39:36Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |TTi EL155 |15V, 5A linear DC power supply | |- |TTi EL302D |30V, 2A dual linear DC power supply | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply | |- |TTi QPX1200 |60V, 50A linear DC power supply | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} 2365c3626a34187610fd120331033de948643878 397 2009-04-06T09:11:23Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |TTi EL155 |15V, 5A linear DC power supply | |- |TTi EL302D |30V, 2A dual linear DC power supply | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} dc64143620c31dd173e7027f180598354eb6ad4b 398 2009-04-06T09:11:55Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |TTi EL155 |15V, 5A linear DC power supply | |- |TTi EL302D |30V, 2A dual linear DC power supply | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} 8a700e385f9eda9bf463ab6be0cab427ecb978d0 399 2009-04-06T09:16:03Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} f808628e9ae32cef56ed7635c236632c05f78726 400 2009-04-06T09:21:30Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} 7b3f3377802404f5cbdbd0be0c836a6babc90fa4 401 2009-04-06T09:28:27Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |} = Pulse Generators = {| border="1" cellpadding "5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Philips PM 5715 |Pulse / Waveform Generator 50 Mhz | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} bc8872e6ff01a33008e2470ea17f9d8045775b55 402 2009-04-06T09:29:21Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Philips PM 5715 |Pulse / Waveform Generator 50 Mhz | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} 73d15202dba9ce094a83be9069196365eba8b02a 406 2009-04-14T07:46:42Z St12361 17 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Philips PM 5715 |Pulse / Waveform Generator 50 Mhz | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[http://www.bt.no Info]] |} c878b2e54d15e0a726f4a0e6b3b95134dbe88d10 408 2009-04-14T07:55:57Z St12361 17 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Philips PM 5715 |Pulse / Waveform Generator 50 Mhz | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} ea5aaba03d9b5a73181daa58f6b7ea2eb8acb828 411 2009-04-15T09:55:27Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator | |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} e6f065331ae4d394799e815819cfaa196bc51f97 User:Nfyal 2 161 403 2009-04-08T19:21:56Z Tbu082 19 New page: Anna Lipniacka wikitext text/x-wiki Anna Lipniacka e4b8f1b1d2163e7eabde80497f44469ab12d753d PET Project 0 22 407 2009-04-14T07:51:39Z St12361 17 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === [[Image:MAPD_radiotracer.JPG‎|frame|right|200px|Fluorodeoxyglucose-FDG]] [[Image:MAPD_positronelectronannihilation.JPG‎‎|frame|left|200px|Positron - Electron Annihilation]] The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === [[Image:MAPD_crystaltransition.JPG‎ |frame|left|200px|Electronic transition in a crystal]] A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === [[Image:MAPD_coincidenceprinciple.JPG‎ |frame|none|200px|Coincidence detection principle]] In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. [[Image:MAPD_coincidencecategories.JPG|frame||200px|3 different coincidence detection events]] * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. [[Image:MAPD tofprinciple.jpg‎ |frame|none|200px|Time of flight principle]] [[Image:MAPD tofprinciple2.JPG|frame|none|200px|Time of flight principle]] == Technology == === Avalanche Photodiodes === [[Image:MAPD structure.jpg‎|frame|right|200px|Structure of MAPD]] An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. [[Image:MAPD proportionalmode.jpg‎ ‎|frame|right|200px|proportional mode]] * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. [[Image:MAPD geigermode.jpg‎‎|frame|right|200px|Geiger mode]] [[Image:MAPD_passivequenching.jpg‎‎|frame|right|200px|passive quenching]] The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. == Characterisation Cell == == Characterisation setup and results == [[User:Dfe002|Dominik]] 09:04, 12 March 2009 (CET) [[Category:Detector lab]] 37870b2cad8c9376dfd26b0b0920b6076963d22f Photomultipliers 0 83 409 2009-04-14T08:01:35Z St12361 17 wikitext text/x-wiki ==Critical Parameters== {| border="1" cellpadding="5" cellspacing="0" !Parameter !Description !Typical Value (Fast PTM) !H6780-02 |- |Rise Time (TR) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |0,05 (MCP) to 3 ns |0,78 ns (0,2 s settling time) |- |Transit Time (TT) |The time interval between the arrival of photon at the cathode and the arrival of the amplified pulse at the anode |MCP:0,5 ns. PMT: 5-30 ns | |- |Transit Time Spread (TTS) |Considered as the most important specification for time-resolved measurements; the timing variation due to the different geometric paths that the electrons can take from the cathode to the anode |MCP: 0,025 ns. PMT: 0,2-1,5 ns |} <BR /> [[Image:PMT_Parameters.jpg]] ==Overview of different PMT's== {| border="1" cellpadding="2" cellspacing="0" !Part ID !Type !Driving Voltage !Gain !Spectral Range (nm) !Spectral Peak (nm) !Dark Current (after 30 min) !Rise Time (ns) !Transit Time (TT)(ns) !Transit Time Spread (TTS) (ns) !Pricing |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r1166.php R1161] |PMT - Head On |1000 V |1,0E+06 |300 to 650 |420 |1-6 nA |2,5 |27 |2,8 |x |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5509-42.php R5505] |PMT - Head On |1750 V |1,0E+06 |300 to 1400 |900 |10 nA |3 |23 |1,5 |16 010 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3478.php R3478] |PMT - Head On |1700 V |1,7E+06 |300 to 650 |420 |6 nA |1,3 |14 |0,36 |3 837 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u-02.php 7400U-02] |PMT - Head On |800 V |5,0E+05 |300 to 850 |500 |2 nA |0,78 |5,4 |0,23 |6 404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r2083.php R2083] |PMT - Head On |3000 V |2,5E+06 |300 to 650 |420 |100 nA |0,7 |16 |0,37 |14 955 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r7400u.php 7400-02] |PMT - Head On |800 V |7,0E+05 |300 to 850 |420 |0,2 nA |0,75 |5,4 |0,28 |6404 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r3809u-52.php R3809-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |2000/s |0,15 |0,55 |0,025 |126 346 SEK |- |[http://sales.hamamatsu.com/en/products/electron-tube-division/detectors/photomultiplier-tubes/part-r5916u-52.php R5916U-52] |MCP - PMT |3000 V |2,0E+05 |160 to 650 |400 |0,5 |0,18 |1 |0,09 |148 643 SEK |} ===So whats's up with the MCP's?=== Microchannel Plate PMT, has plates containing numerous small holes, microchannels, which are lined with a secondary emissive dynode material. Electrons are amplified as they drop down the voltage gradients across the microchannel plate. MCP-PMT shows the fastes time response due to the restricted range of electron paths and short electron travel distance. Disadvantage is lower gain and photocurrent typ at 100 nA vs. 10-100uA for dyanode PMT <BR /> [[Image:MCP-PMT.jpg]] 93049a668858d07a557f6e5654f09c906f309abc User:St11874 2 162 410 2009-04-15T09:52:06Z Dfe002 7 New page: Therese Sjursen wikitext text/x-wiki Therese Sjursen fb07ac5930cd7e87a84b1760eed07ac67e5f939d File:3D tpccpower.JPG 6 133 412 260 2009-04-21T05:30:40Z Dfe002 7 uploaded a new version of "[[File:3D tpccpower.JPG]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ParticlePhysicsGroupMeetings 0 139 415 371 2009-04-23T20:11:20Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 27040efb56cc56cba88114aaffa3dc3e454ac35c Mini parallab workshop, March 19, 2009 0 157 429 428 2009-04-24T11:45:11Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre>sh /work2/atlas/install_scripts/list_athena_release.sh</pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre>source /work2/atlas/install_scripts/setup_athena.sh version</pre> (where version is one in the previous list) #* to get a work area use <pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands<pre>chown -R ${USER}:atlasuib /work/${USER} /work2/${USER}; chmod -R g+r /work/${USER} /work2/${USER}</pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files # With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre>ssh -X ${USER}@fimm.bccs.uib.no</pre> <pre>qsub -I -X</pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre>source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3</pre><pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 5ab8996847fa62986e662798d0f980885127252a 430 429 2009-04-24T11:45:47Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre>sh /work2/atlas/install_scripts/list_athena_release.sh</pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre>source /work2/atlas/install_scripts/setup_athena.sh version</pre> (where version is one in the previous list) #* to get a work area use <pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre>chown -R ${USER}:atlasuib /work/${USER} /work2/${USER}; chmod -R g+r /work/${USER} /work2/${USER}</pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files # With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome <pre>ssh -X ${USER}@fimm.bccs.uib.no</pre> <pre>qsub -I -X</pre> (the -X's are for X window forwarding, you must use these) (wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea <pre>source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3</pre><pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 4a4979c76ff7889a70ffff8c1ed3a73dec0ba369 431 430 2009-04-24T11:46:40Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre>sh /work2/atlas/install_scripts/list_athena_release.sh</pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre>source /work2/atlas/install_scripts/setup_athena.sh version</pre> (where version is one in the previous list) #* to get a work area use <pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre>chown -R ${USER}:atlasuib /work/${USER} /work2/${USER}; chmod -R g+r /work/${USER} /work2/${USER}</pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files # With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome #:<pre>ssh -X ${USER}@fimm.bccs.uib.no</pre> #:<pre>qsub -I -X</pre> #:(the -X's are for X window forwarding, you must use these) #:(wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea #:<pre>source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3</pre> #:<pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> #:and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] 131402e6938b74b53d8ae8f6932413dc520f7b18 432 431 2009-04-24T11:47:26Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use <pre>sh /work2/atlas/install_scripts/list_athena_release.sh</pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre>source /work2/atlas/install_scripts/setup_athena.sh version</pre> (where version is one in the previous list) #* to get a work area use #*:<pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands <pre>chown -R ${USER}:atlasuib /work/${USER} /work2/${USER}; chmod -R g+r /work/${USER} /work2/${USER}</pre> and in case you have something in <tt>/workX/users/</tt> do the same for these files # With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome #:<pre>ssh -X ${USER}@fimm.bccs.uib.no</pre> #:<pre>qsub -I -X</pre> #:(the -X's are for X window forwarding, you must use these) #:(wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea #:<pre>source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3</pre> #:<pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> #:and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] d9b8cab56b497738931bc883a7b296fe3163206d 433 432 2009-04-24T11:48:01Z Tbu082 19 wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == https://wikihost.uib.no/ift/images/d/de/FimmWorkshop18.03.09v2.pdf === Update === A number of things changed on fimm since the workshop 19/3-09 # <tt>/work/atlas</tt> was broken by some cleaning script! for now use <tt>/work2/atlas</tt> instead # I have removed the old atlas installations, we now use the grid installations #* to see what versions are available use #*: <pre>sh /work2/atlas/install_scripts/list_athena_release.sh</pre> #:(current list: 14.2.10 14.2.10.1 14.2.23 14.2.23.2 14.2.23.3 14.2.25 14.2.25.6 14.2.25.8 14.5.0 14.5.0.7 14.5.1 14.5.1.2 14.5.1.3 14.5.2 14.5.2.1 14.5.2.2 14.5.2.3 15.0.0) #* to get an athena environment use <pre>source /work2/atlas/install_scripts/setup_athena.sh version</pre> (where version is one in the previous list) #* to get a work area use #*: <pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> # for now dq2 is broken, avoid it, if you need it use it on lxplus and scp the files to fimm # make sure everyone can see your files, please run the following commands #: <pre>chown -R ${USER}:atlasuib /work/${USER} /work2/${USER}; chmod -R g+r /work/${USER} /work2/${USER}</pre> #: and in case you have something in <tt>/workX/users/</tt> do the same for these files # With interactive jobs one can run ATLAS eventviewers on fimm, try it - its awesome #:<pre>ssh -X ${USER}@fimm.bccs.uib.no</pre> #:<pre>qsub -I -X</pre> #:(the -X's are for X window forwarding, you must use these) #:(wait until prompt changes to interactive job, often quick, but can take some minutes) in the job get a workarea #:<pre>source /work2/atlas/install_scripts/setup_athena.sh 14.5.2.3</pre> #:<pre>source /work2/atlas/install_scripts/setup_athena_workarea.sh</pre> #:and in the prompt run either <tt>atlantis</tt> or <tt>vp1</tt> == Program == * Intro to fimm - the parallab linux cluster ** What is there ** How to get an account ** The file system * How to submit a simple job ** PBS scripts ** PBS commands * What is in the ATLAS work directory * Using root in a job * Using athena in a job * Using nordugrid & dq2 == Evo connection information == People at CERN can connect from the office in building 21, it should be empty now anyway. There is a duet mic/speaker device there already. <pre> Title: Bergen parallab workshop I Description: Workshop for Bergen ATLAS people on how to use the parallab resources Community: ATLAS Password: ATLASFimm Time: 2009-03-18 12:00-15:00 (meeting starts 12:30) Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=eleBevvavDalatIuanIl Phone Bridge: ID: 863906 Password: 0686 Swiss: +41 22 76 71400 </pre> [[Category:Particle Physics]] b83967a72a18d76d739e532f0a8856985d325c31 Particle Physics group 0 137 434 405 2009-05-03T09:26:13Z St11874 25 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 070327923e0b7cef9b562ae4738474f37797b30c ParticlePhysicsGroupMeetings 0 139 451 415 2009-05-05T08:09:08Z St11874 25 wikitext text/x-wiki == Particle Physics Group Meetings == [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 1a275d6b595fffe831df9614bb1e2ad482f97d99 Shifts/OTP/fimm group meeting May 5, 2009 0 165 452 2009-05-05T08:15:52Z St11874 25 Created page with '=== Connecting === The meeting will be held 12:00-13:00 on Tuesday, 5th of May, 2009. === Agenda === * OTP requirements (Anna) * Shift information and plans (Therese) * Fimm ne...' wikitext text/x-wiki === Connecting === The meeting will be held 12:00-13:00 on Tuesday, 5th of May, 2009. === Agenda === * OTP requirements (Anna) * Shift information and plans (Therese) * Fimm news (Thomas) * AOB [[media:Shifts@ATLAS]] --Therese 05.05.2009 feac66fe5cadaf9c608654d039eb2918fee8315b 455 452 2009-05-05T09:16:44Z St11874 25 wikitext text/x-wiki === Connecting === The meeting will be held 12:00-13:00 on Tuesday, 5th of May, 2009. === Agenda === * OTP requirements (Anna) * Shift information and plans (Therese) * Fimm news (Thomas) * AOB [[File:Shifts@ATLAS.pdf]] --Therese 05.05.2009 11a8531aa9ed1aa2080a59421f4493079b0334a5 File:Shift@ATLAS.pdf 6 166 453 2009-05-05T09:13:20Z St11874 25 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Shifts@ATLAS.pdf 6 167 454 2009-05-05T09:14:50Z St11874 25 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 User:Mug004 2 168 458 2009-05-05T12:36:47Z Tbu082 19 Created page with 'Maren Ugland' wikitext text/x-wiki Maren Ugland 4126381d08a3ee97bc02ecf9edbdf6e9d90e6ca8 Main Page 0 1 459 369 2009-05-06T07:34:46Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 68f39ba3813159d60ddb23d1f79c9aecc7a57347 Microelectronics group 0 25 460 218 2009-05-12T11:49:36Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[PHYS321]] Øvingsoppgaver i PHYS321 [[Category:Mikroelektronikk]] 7cfa3b9e29c6327915f4b5f355515656770ecdd4 Øvingsoppgaver PHYS321 0 169 461 2009-05-12T11:57:26Z Nfyku 4 Created page with '== Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC Studio IC Studio]] Du skal tegne en 6 transistor SRAM-celle m...' wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC Studio IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virkwer som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygegs opp. [[Category:Mikroelektronikk]] 5d151d3e96da4236b3ef134e2617c6450977404f 462 461 2009-05-12T12:00:50Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[:Wikipedia:IC_Studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygegs opp. [[Category:Mikroelektronikk]] edcea6cb3492b0741837e93ee9528b017500d26a 463 462 2009-05-12T12:01:47Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC_Studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. [[Category:Mikroelektronikk]] 5f50ed11ee99aa843a466beb47107795f3750773 464 463 2009-05-12T12:10:14Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[Media:IC Studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. [[Category:Mikroelektronikk]] 0ca1ce9c41e5886260f13d705fa683d586449ab4 465 464 2009-05-12T12:14:19Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[:IC Studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. [[Category:Mikroelektronikk]] 098f98a38724ab298042f200430ab16e207b753d 466 465 2009-05-12T12:14:39Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[:IC_Studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. [[Category:Mikroelektronikk]] 813094a0bfc539269e05767ae33c531e0dfa363d 467 466 2009-05-12T12:18:49Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC_Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. [[Category:Mikroelektronikk]] e06238ae6c2973dd90b28ee408df1d72a92981ce 468 467 2009-05-12T12:19:36Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC_studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. [[Category:Mikroelektronikk]] de4199254dc8d8b165f9e829fc8bd537bcb66eac Lab Equipment 0 111 469 411 2009-05-19T06:26:50Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |Reference manual |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator | |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 579f409b57765419fa3520c243b0ad5de58d0a1c 471 469 2009-05-19T06:28:33Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[[File:Keithley2635a.pdf Reference manual]] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator | |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 7dd8b19aa5849f448684d8074435f58092e48ccb 472 471 2009-05-19T06:30:55Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter | |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual]] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator | |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 1ac0afd6c90db50f7a5c8cc72c2fcbaea2a78037 474 472 2009-05-19T06:34:11Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel | |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual]] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual]] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator | |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 3063f0a979d3b662e138940c8f59fbf64f56377d 476 474 2009-05-19T06:37:36Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual]] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual]] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual]] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator | |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} baa55c5a2fdc9736795488d9e0bfdecb249be0e1 479 476 2009-05-19T06:48:08Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual]] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual]] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual]] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator | |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual]] [[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual]] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} bc5c4a309d5678fc2bdf46c2e6e6594206419c74 480 479 2009-05-19T06:49:38Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual]] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual]] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual]] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual]] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual]] [[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual]] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[[http://www.phillipsscientific.com/pdf/6954ds.pdf Info]] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[[http://www.ortec-online.com/pdf/vt120.pdf Info]] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info]] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} f586e030ce6ef67ff6c09e9ff6086f52bff6490a 481 480 2009-05-19T06:50:52Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s | |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 107dec7f6b4eb1534166554039a347c45c0e1c44 482 481 2009-05-19T07:33:24Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s | |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} b5efdd41ea5dd1eea35a3b1c10b5801d86b1fc27 485 482 2009-05-19T07:34:35Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB | |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 0f215abf083ed7ad76a34919b8249652f8369ba0 488 485 2009-05-19T07:52:02Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller | |- |Caen V2718 |VME controller | |- |Caen V1729a |14 bit, 4 channel ADC | |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 57ef743e2aaf0b063540031647d2cd33b53a9a39 492 488 2009-05-19T08:04:32Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] |- |Caen V965a |QDC | |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} cb3b01731509fec56b9fd8f2fd57e9dec686aaca 494 492 2009-05-19T08:06:29Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 78a335a631dd48e64e3ea5b568a8bfbb15845bc0 496 494 2009-05-19T08:13:46Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] |} a23284ca55957184e4c7742c2313fa9e7c90d47e File:Keithley2635a.pdf 6 170 470 2009-05-19T06:27:54Z Dfe002 7 Keithley2635a.pdf Sourcemeter reference manual wikitext text/x-wiki Keithley2635a.pdf Sourcemeter reference manual 7d404927b89acbd2672eeed3fca687e72a972560 File:Keithley2100.pdf 6 171 473 2009-05-19T06:33:37Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Keithley2700.pdf 6 172 475 2009-05-19T06:37:07Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:TektronixAFG3252progman.pdf 6 173 477 2009-05-19T06:46:51Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:TektronixAFG3252usman.pdf 6 174 478 2009-05-19T06:47:04Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Tek4000user.pdf 6 175 483 2009-05-19T07:33:34Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Tek4000prog.pdf 6 176 484 2009-05-19T07:33:48Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:ITTQPX1200manual.pdf 6 177 486 2009-05-19T07:51:01Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:ITTQL355TPmanual.pdf 6 178 487 2009-05-19T07:51:44Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Caenv1729ausman.pdf 6 179 489 2009-05-19T07:57:34Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Caenv2718usman.pdf 6 180 490 2009-05-19T08:00:56Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Caen2818usman.pdf 6 181 491 2009-05-19T08:04:18Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Caenv965ausman.pdf 6 182 493 2009-05-19T08:06:05Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Caenn957usman.pdf 6 183 495 2009-05-19T08:13:25Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Lab Equipment 0 111 497 496 2009-05-19T08:14:38Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 9b60973be920a3e7ac1d540f1cdc1dea35851839 User:Aaa014 2 184 498 2009-05-19T15:57:54Z Tbu082 19 Created page with 'Alette Åsvold' wikitext text/x-wiki Alette Åsvold 8b414bfcfcdf98da1aa459ceb1ae2d495320455f 499 498 2009-05-20T06:37:40Z Aaa014 28 wikitext text/x-wiki Alette Aasvold 9b1236d8deacdddc06f9624cf598c6090fc62ffa Busy Box and related 0 3 501 162 2009-05-20T10:54:10Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 272be53238bc4d45c790fbf5a189c689f8cd3089 502 501 2009-05-20T11:15:29Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Added firmware register to 0x2015 </li> <li> Updated Busy Controller module to handle orphan messages </li> </ul> <br> === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] e9bafbe319ecab2a294c7d216bfda4ebf801874a 503 502 2009-05-20T11:16:01Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware register added to 0x2015 </li> <li> Updated Busy Controller module to handle orphan messages </li> </ul> <br> === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] f16de0f6c57bfca4550f7701e89df1447d4d3465 504 503 2009-05-20T11:16:36Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 6ab0b8f07bcc27b6cfe36874886af27dcd30891d 505 504 2009-05-20T11:18:39Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] fcea1295c15044da176015d6a2e8ad67dbab20bd 507 505 2009-05-20T11:29:16Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/~alme/wiki/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] eeedf54010bf7a80c1f4181e255ab81182e6e7a0 508 507 2009-05-20T11:32:46Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎]] <br> Source files: [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br><br> <ul> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 4fbe5e0a60541dff6cb19dd2e085906ea3e49a90 509 508 2009-05-20T11:34:07Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎|User_guide_busybox.pdf‎]] <br> Source files: [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br><br> <ul> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 156b62f94a673d21804bf0d7266f99c6baf2490a 510 509 2009-05-20T11:38:02Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎]] | <br> Source files: [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br><br> <ul> <li>'''Version 1.0: '''<br> [http://www.ift.uib.no/~alme/wiki/armboot_v2.2.bin armboot_v2.2.bin] | [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] abc6cd84f72776bc5b00f5e01927aeff8316a9ef 511 510 2009-05-20T11:49:29Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎]] | <br> Source files: [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br><br> <ul> <li>'''Version 1.01: '''<br> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit] | [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] e88e96597b0075713c498c9a32924f79094341f7 512 511 2009-05-20T11:51:22Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎]] | <br> Source files: [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br><br> <ul> <li>'''Version 1.01: '''<br> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] | </li> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 86f8c30380f0de05c4e98962866320636bf4944b 513 512 2009-05-20T11:52:42Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎]] | <br> Source files: [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br><br> <ul> BusyBox firmware:<br> <li>'''Version 1.01: '''<br> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] | </li> <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 9143fed335ba5537f34a5923d2c01fd1d3fd3e59 514 513 2009-05-20T11:54:20Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎]] | <br> Source files: [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br><br> <ul> BusyBox firmware:<br> <li>'''Version 1.01: '''<br> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </li> <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] c1f2bcdad351cd1f39f36dc072f065336d8054e6 515 514 2009-05-20T11:55:30Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> <ul> BusyBox firmware:<br> <li>'''Version 1.01: '''<br> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </li> <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 7a19bba066ec99cbeae64ea8118809c3077643b4 516 515 2009-05-20T11:56:24Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <li>'''Version 1.01: '''<br> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </li> <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] a1e1b4ee749ffbd101d8c7f41e69e21f86737750 517 516 2009-05-20T11:59:29Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </li> <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 2c5284d304faa3cac7313bf5d4a44b03dbc625b3 518 517 2009-05-20T12:11:32Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </li> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | DCS BusyBox firmware]] [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 386e8db961b3b1141ded6ece440e7ebab5dfef30 519 518 2009-05-20T12:12:51Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </li> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | DCS BusyBox firmware]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 7ed47e7e6067246ca0303ffac06173d724519de7 520 519 2009-05-20T12:13:37Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | DCS BusyBox firmware]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 7343f080b5a3d2957bc5550f22ca41291ddedf42 521 520 2009-05-20T12:14:29Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | DCS BusyBox firmware]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] c1daa9aad921513b72f795b281f5e42062bead1e 522 521 2009-05-20T12:15:17Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | DCS firmware]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] c2eb8932a684dd1e738ba6dd3629655a8e62bb83 523 522 2009-05-20T12:16:11Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | DCS firmware]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] 0ec168d24fdb8925bbea8698d631b9af2ca29871 524 523 2009-05-20T12:16:35Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | DCS firmware]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] [[Category:Alice]] [[Category:Trigger]] bb859b0635149517a442ec10848e143b7f287861 525 524 2009-05-20T12:18:41Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Media:bb_manual.pdf|User Guide BusyBox, Rikard Bølgen]] <br> [[Category:Alice]] [[Category:Trigger]] 81aa1f80f2dd5374e4f4f66ba557d3d2bfb52fa2 526 525 2009-05-20T12:19:31Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] fcfa66973e8893bce8e3ed2e8f402e4d36fb5c84 527 526 2009-05-20T12:24:14Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ | CVS for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 2e55c374a22cfc0bdc0b9c79c32913841c46cfb2 528 527 2009-05-20T12:26:01Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ | CVS for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 4bf1eab452240bd97a97a40dad4205541f95ea5f 529 528 2009-05-20T12:27:17Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware | SVN database][http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ | CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ | CVS for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] de144350bab07a1b435465b5348c5b5322b7d594 530 529 2009-05-20T12:28:10Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database]|[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ | CVS for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] f2bb67b3806397902c6ad83991ebad7fa9b24579 531 530 2009-05-20T12:28:25Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit | busybox_fpga1.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit | busybox_fpga2.bit] [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit | busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ | CVS for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] acbfb5d4acdeaeb6f455355f69cf5d5f1ed423f9 532 531 2009-05-20T12:29:00Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ | CVS for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section | BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] a025ae3201a87336b5c6b0fbb67a6b04ffe91f48 533 532 2009-05-20T12:29:30Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ CVS for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] c31e12df818dedb39ec948d58511cd4c1b892d53 534 533 2009-05-20T12:30:23Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 7afb02eb2f6a6e048976bdc94fa0517ba5d3c6a8 535 534 2009-05-20T12:31:10Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> DCS board firmware for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section BUSYBOX]] <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] e230f0c710dec9d3230931ca0fba7d7b5f954e57 536 535 2009-05-20T12:33:14Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section BUSYBOX]] </ul> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 137dc57fee1605648e8fe5cc34759cd9a1793c72 537 536 2009-05-20T12:34:47Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] a5aa5dcedb9bec8871095102895c99c6d3e22ce8 538 537 2009-05-20T12:36:54Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 6f9de9755e8d93bb7378c309b557c6bc20490a93 539 538 2009-05-20T12:37:37Z Rbo021 13 wikitext text/x-wiki == Overview == Traditionally the Fee in ALICE sub-detectors indicates when its buffers are full and cannot handle further triggers from the CTP. This is either done directly or through the FANIN module to the LTU with a busy signal. Due to dense cabling, four of the ALICE sub-detectors (TPC, PHOS, FMD and EMCal), utilize a BusyBox to keep track of free buffers in their Fec. The BusyBox asserts the busy signal to the LTU when one or more of these conditions are true: # Buffers in Fec are full # Upon receiving a trigger sequence from TTC # When the TTC sends a global reset to the Fee The busy signal is de-asserted when one or more FEC buffers are freed The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 7506d260888c07260fd40c79dcda2597ea83fff2 540 539 2009-05-20T12:39:23Z Rbo021 13 wikitext text/x-wiki == Overview == ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 7f83348161b132ab7b0118a3ea22950e0562dd57 541 540 2009-05-20T12:41:28Z Rbo021 13 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 64f0898eb12df58932e26b417cd538b2f09623db 543 541 2009-05-20T12:45:26Z Rbo021 13 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|500px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] ed761df9e1417f2ceca4ffa30a063995f3e44e97 544 543 2009-05-20T12:46:12Z Rbo021 13 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 2b8d8a33ef5dbf9dcebf3864daff4b04a06eb4d1 545 544 2009-05-20T12:57:02Z Dfe002 7 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === [[How to run the RCU - DRORC - Busybox setup]] === === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> '''1.01 (~may 2009)''' <br> <ul> <li> Firmware version register added to 0x2015 </li> <li> Busy Controller module updated to handle orphan messages </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1.bit busybox_fpga1.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga2.bit busybox_fpga2.bit] | [http://svn.ift.uib.no/svn/busybox_firmware/trunk/busybox_files/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 140a90d6b1fed31a4ad403d281748f334e513233 File:User guide busybox.pdf 6 185 506 2009-05-20T11:26:11Z Rbo021 13 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Block busybox.jpg 6 186 542 2009-05-20T12:44:30Z Rbo021 13 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 How to run the RCU - DRORC - Busybox setup 0 187 546 2009-05-20T13:07:31Z Dfe002 7 Created page with '=== How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collect...' wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. ## Configure the RCU with the conf-rcu alias. This sets up the RCU and configures the Front End Cards (FECs). ### Execute the /etc/boot/S40... script on the RCU-DCS. This changes the trigger from a software trigger to the DCS trigger intput. #### Start the infoBrowser on the drorc machine with the command "infoBrowser". ##### Start date with the command "startdate". ###### Log into the LTU: "ssh -X ltu@vme1". This is the general setup and configuration done. Continue with the the setup of the LTU. = RCU stuff = = LTU stuff = = Busybox stuff = = Datataking with date = 17788a5c086aed37782e6c444cc5cfec7a04f1b3 547 546 2009-05-20T13:08:09Z Dfe002 7 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Configure the RCU with the conf-rcu alias. This sets up the RCU and configures the Front End Cards (FECs). # Execute the /etc/boot/S40... script on the RCU-DCS. This changes the trigger from a software trigger to the DCS trigger intput. # Start the infoBrowser on the drorc machine with the command "infoBrowser". # Start date with the command "startdate". # Log into the LTU: "ssh -X ltu@vme1". This is the general setup and configuration done. Continue with the the setup of the LTU. = RCU stuff = = LTU stuff = = Busybox stuff = = Datataking with date = 1d984f3de8816ac01b7e6e65a352db1cb341751b Busy Box and related 0 3 548 545 2009-05-24T19:26:04Z Rbo021 13 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === [[How to run the RCU - DRORC - Busybox setup]] === === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 0cfac96c7e8ae58fdc29674094f339700723adf8 How to run the RCU - DRORC - Busybox setup 0 187 554 547 2009-05-29T06:52:12Z Dfe002 7 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Log into the LTU: "ssh -X ltu@vme1". # Log into the RCU dcs board: "ssh dcs0031". # Log into the Busybox DCS board: "ssh dcs0055". # Start the infoBrowser on the drorc machine with the command "infoBrowser". = Configuring the RCU = On the RCU, execute the script /etc/boot/S40configure.sh. This does several things: - turning on the Front End Cards - Setting the correct L2 Latency - Switching to LTU trigger Then, as the date user from the drorc machine, execute the alias 'conf-fec'. This configures the RCU and FECs via the DDL for Data readout, but unfortunately also for Software triggers. Therefor, execute the S40configure.sh script on the dcs0031 once again. = LTU stuff = On the LTU, execute 'vmecrate ltu'. This should pop up two windows on your machine. In the ltu window, click on Configuration-> TTCInit, and then Configuration->LTUInit. Click on 'CTP Emulator' to open the CTP Emulator window. Click on 'click here to choose sequence', and choose the 'L2a.seq'. Don't forget to click 'Load sequence'. Sending triggers: After you clicked on 'start emulation' you can send triggers in two ways: - Single triggers, for this just click on 'Generate SW Start signal(s)'. - Or triggers with a certain rate. For this, click on 'not selected' and choose BC. You can switch the BC downscaling hex value to a decimal value by right clicking on the value. Rates can also be entered in a more convenient manner than the downscaling factor: <blockquote style="background-color: lightgrey; border: solid thin grey;"> BC downscaling factor is an integer number (32 bits) giving the number of BCs (25ns) between 2 triggers. Examples: 0 -> BC rate (40 Mhz) 1 -> 40/2 Mhz rate 4000-> generate 1 Start signal per 100 micsecs ... or use: s (seconds, ms (miliseconds, us (microseconds), for period or: hz (hertz), khz (kilohertz), mhz (megahertz) for rate. 3s -> 3 seconds 10 ms -> 10 miliseconds period 3 khz -> 3 khz rate </blockquote> = Busybox stuff = = Datataking with date = 528301c780d3c834134bf68aabe7f85c5daefa90 555 554 2009-05-29T07:04:38Z Dfe002 7 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Log into the LTU: "ssh -X ltu@vme1". # Log into the RCU dcs board: "ssh dcs0031". # Log into the Busybox DCS board: "ssh dcs0055". # Start the infoBrowser on the drorc machine with the command "infoBrowser". = Configuring the RCU = On the RCU, execute the script /etc/boot/S40configure.sh. This does several things: - turning on the Front End Cards - Setting the correct L2 Latency - Switching to LTU trigger Then, as the date user from the drorc machine, execute the alias 'conf-fec'. This configures the RCU and FECs via the DDL for Data readout, but unfortunately also for Software triggers. Therefor, execute the S40configure.sh script on the dcs0031 once again. = LTU stuff = On the LTU, execute 'vmecrate ltu'. This should pop up two windows on your machine. In the ltu window, click on Configuration-> TTCInit, and then Configuration->LTUInit. Click on 'CTP Emulator' to open the CTP Emulator window. Click on 'click here to choose sequence', and choose the 'L2a.seq'. Don't forget to click 'Load sequence'. Sending triggers: After you clicked on 'start emulation' you can send triggers in two ways: - Single triggers, for this just click on 'Generate SW Start signal(s)'. - Or triggers with a certain rate. For this, click on 'not selected' and choose BC. You can switch the BC downscaling hex value to a decimal value by right clicking on the value. Rates can also be entered in a more convenient manner than the downscaling factor: <blockquote style="background-color: lightgrey; border: solid thin grey;"> BC downscaling factor is an integer number (32 bits) giving the number of BCs (25ns) between 2 triggers.<br> Examples:<br> 0 -> BC rate (40 Mhz)<br> 1 -> 40/2 Mhz rate<br> 4000-> generate 1 Start signal per 100 micsecs<br> ...<br><br> or use: s (seconds, ms (miliseconds, us (microseconds), for period or:<br> hz (hertz), khz (kilohertz), mhz (megahertz) for rate.<br> 3s -> 3 seconds<br> 10 ms -> 10 miliseconds period<br> 3 khz -> 3 khz rate<br> </blockquote> = Busybox stuff = From the busybox DCS board, you find some bitfiles to program and setup the Busybox under: /mnt/kjekspc7/rbo021/busybox_files. You can program the busybox with the program.sh script: ./program.sh busybox_fpga1.bit busybox_fpga2.bit If you ommit the second bitfile, a dummy bitfile is used and only 1 FPGA programmed. = Datataking with date = #Start date from the drorc machine as date user with the command: 'startdate'. #Take the lock by clicking on the white open lock symbol. #Click on the right arrows until the 'Ready to start' is highlighted, and the button underneath is clickable. #Click on Start processes. On the LDC display, the green icon should move down to the point 'Waiting start of data', and the LDC status display should reset its numbers, then show 2 Sub-events recorded. These are the Start of Run Events. #Then press start. #You then can send triggers from the LTU with the CTP emulator. #The procedure is always: Start run, Start sending triggers, Stop sending triggers, Stop run. If you send triggers while there is no run, the Events remain in the RCU and are not being read out, which makes the run the stuck and the RCU will have to be reset. The Busybox has to be reset between each run anyway with the bbinit.sh script. 028a022211f341fd320b2f7cd72cddcfea18b85e 556 555 2009-05-29T07:05:16Z Dfe002 7 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Log into the LTU: "ssh -X ltu@vme1". # Log into the RCU dcs board: "ssh dcs0031". # Log into the Busybox DCS board: "ssh dcs0055". # Start the infoBrowser on the drorc machine with the command "infoBrowser". = Configuring the RCU = On the RCU, execute the script /etc/boot/S40configure.sh. This does several things: - turning on the Front End Cards - Setting the correct L2 Latency - Switching to LTU trigger Then, as the date user from the drorc machine, execute the alias 'conf-fec'. This configures the RCU and FECs via the DDL for Data readout, but unfortunately also for Software triggers. Therefor, execute the S40configure.sh script on the dcs0031 once again. = LTU stuff = On the LTU, execute 'vmecrate ltu'. This should pop up two windows on your machine. In the ltu window, click on Configuration-> TTCInit, and then Configuration->LTUInit. Click on 'CTP Emulator' to open the CTP Emulator window. Click on 'click here to choose sequence', and choose the 'L2a.seq'. Don't forget to click 'Load sequence'. Sending triggers: After you clicked on 'start emulation' you can send triggers in two ways: - Single triggers, for this just click on 'Generate SW Start signal(s)'. - Or triggers with a certain rate. For this, click on 'not selected' and choose BC. You can switch the BC downscaling hex value to a decimal value by right clicking on the value. Rates can also be entered in a more convenient manner than the downscaling factor: <blockquote style="background-color: lightgrey; border: solid thin grey;"> BC downscaling factor is an integer number (32 bits) giving the number of BCs (25ns) between 2 triggers.<br> Examples:<br> 0 -> BC rate (40 Mhz)<br> 1 -> 40/2 Mhz rate<br> 4000-> generate 1 Start signal per 100 micsecs<br> ...<br><br> or use: s (seconds, ms (miliseconds, us (microseconds), for period or:<br> hz (hertz), khz (kilohertz), mhz (megahertz) for rate.<br> 3s -> 3 seconds<br> 10 ms -> 10 miliseconds period<br> 3 khz -> 3 khz rate<br> </blockquote> = Busybox stuff = From the busybox DCS board, you find some bitfiles to program and setup the Busybox under: /mnt/kjekspc7/rbo021/busybox_files. You can program the busybox with the program.sh script: ./program.sh busybox_fpga1.bit busybox_fpga2.bit If you ommit the second bitfile, a dummy bitfile is used and only 1 FPGA programmed. = Datataking with date = #Start date from the drorc machine as date user with the command: 'startdate'. #Take the lock by clicking on the white open lock symbol. #Click on the right arrows until the 'Ready to start' is highlighted, and the button underneath is clickable. #Click on Start processes. On the LDC display, the green icon should move down to the point 'Waiting start of data', and the LDC status display should reset its numbers, then show 2 Sub-events recorded. These are the Start of Run Events. #Then press start. #You then can send triggers from the LTU with the CTP emulator. #The procedure is always: Start run, Start sending triggers, Stop sending triggers, Stop run.If you send triggers while there is no run, the Events remain in the RCU and are not being read out, which makes the run the stuck and the RCU will have to be reset. The Busybox has to be reset between each run anyway with the bbinit.sh script. 8cc014d08a54c65ecd9cd6c1e940eb865b1f9cac 557 556 2009-05-29T07:34:59Z Dfe002 7 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Log into the LTU: "ssh -X ltu@vme1". # Log into the RCU dcs board: "ssh dcs0031". # Log into the Busybox DCS board: "ssh dcs0055". # Start the infoBrowser on the drorc machine with the command "infoBrowser". = Configuring the RCU = On the RCU, execute the script /etc/boot/S40configure.sh. This does several things: - turning on the Front End Cards - Setting the correct L2 Latency - Switching to LTU trigger Then, as the date user from the drorc machine, execute the alias 'conf-fec'. This configures the RCU and FECs via the DDL for Data readout, but unfortunately also for Software triggers. Therefor, execute the S40configure.sh script on the dcs0031 once again. = LTU stuff = On the LTU, execute 'vmecrate ltu'. This should pop up two windows on your machine. In the ltu window, click on Configuration-> TTCInit, and then Configuration->LTUInit. Click on 'CTP Emulator' to open the CTP Emulator window. Click on 'click here to choose sequence', and choose the 'L2a.seq'. Don't forget to click 'Load sequence'. Sending triggers: After you clicked on 'start emulation' you can send triggers in two ways: - Single triggers, for this just click on 'Generate SW Start signal(s)'. - Or triggers with a certain rate. For this, click on 'not selected' and choose BC. You can switch the BC downscaling hex value to a decimal value by right clicking on the value. Rates can also be entered in a more convenient manner than the downscaling factor: <blockquote style="background-color: lightgrey; border: solid thin grey;"> BC downscaling factor is an integer number (32 bits) giving the number of BCs (25ns) between 2 triggers.<br> Examples:<br> 0 -> BC rate (40 Mhz)<br> 1 -> 40/2 Mhz rate<br> 4000-> generate 1 Start signal per 100 micsecs<br> ...<br><br> or use: s (seconds, ms (miliseconds, us (microseconds), for period or:<br> hz (hertz), khz (kilohertz), mhz (megahertz) for rate.<br> 3s -> 3 seconds<br> 10 ms -> 10 miliseconds period<br> 3 khz -> 3 khz rate<br> </blockquote> After each change of this value, you have to press Enter (or move the mouse cursor out of the testbox). You can see the changed value in the status window. = Busybox stuff = From the busybox DCS board, you find some bitfiles to program and setup the Busybox under: /mnt/kjekspc7/rbo021/busybox_files. You can program the busybox with the program.sh script: ./program.sh busybox_fpga1.bit busybox_fpga2.bit If you ommit the second bitfile, a dummy bitfile is used and only 1 FPGA programmed. = Datataking with date = #Start date from the drorc machine as date user with the command: 'startdate'. #Take the lock by clicking on the white open lock symbol. #Click on the right arrows until the 'Ready to start' is highlighted, and the button underneath is clickable. #Click on Start processes. On the LDC display, the green icon should move down to the point 'Waiting start of data', and the LDC status display should reset its numbers, then show 2 Sub-events recorded. These are the Start of Run Events. #Then press start. #You then can send triggers from the LTU with the CTP emulator. #The procedure is always: Start run, Start sending triggers, Stop sending triggers, Stop run.If you send triggers while there is no run, the Events remain in the RCU and are not being read out, which makes the run the stuck and the RCU will have to be reset. The Busybox has to be reset between each run anyway with the bbinit.sh script. Always make sure to release the lock before you close date, otherwise the drorc machine has to be rebooted. =FAQ= ===The Date/LTU Window don't open=== Make sure you have the '-X' in the ssh command. ===The lock in date is red and I can't take it=== Someone else has date opened and has the lock, or date was closed without releasing the lock first. Reboot the date machine. ===There is an error message '1146' in the InfoBrowser=== That's normal. ===I want to see older messages in the InfoBrowser=== Unhighlight the 'Online' on the lower right side, then press 'Query'. ===How can I add another drorc equipment?=== editDb on the drorc machine. ===How is the physmem on the drorc machine set up?=== -alonegdc ipc 1000000 control,eventbuilder 2 -aloneldc ipc 1048756 control,readoutReadyFifo 1 -aloneldc ipc 1048756 readout 3 -aloneldc ipc 1048756 readoutFirstLevelVectors 4 -aloneldc ipc 1048756 readoutSecondLevelVectors 6 -aloneldc physmem /dev/physmem1 524288000 readoutDataPages 7 ===Which equipements are needed?=== drorc3006_0 -EqId: 2 -rorcRevision: 3 -rorcSerialNb: 3006 -rorcChannelNb: 0 -dataSource: 0 (Fec) -mrorcId: 7 (for this one) drorc_trigger a2f153b581659048cbb7587bfb2d4a2c09b1fdfd 558 557 2009-05-29T07:37:12Z Dfe002 7 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Log into the LTU: "ssh -X ltu@vme1". # Log into the RCU dcs board: "ssh dcs0031". # Log into the Busybox DCS board: "ssh dcs0055". # Start the infoBrowser on the drorc machine with the command "infoBrowser". = Configuring the RCU = On the RCU, execute the script /etc/boot/S40configure.sh. This does several things: - turning on the Front End Cards - Setting the correct L2 Latency - Switching to LTU trigger Then, as the date user from the drorc machine, execute the alias 'conf-fec'. This configures the RCU and FECs via the DDL for Data readout, but unfortunately also for Software triggers. Therefor, execute the S40configure.sh script on the dcs0031 once again. = LTU stuff = On the LTU, execute 'vmecrate ltu'. This should pop up two windows on your machine. In the ltu window, click on Configuration-> TTCInit, and then Configuration->LTUInit. Click on 'CTP Emulator' to open the CTP Emulator window. Click on 'click here to choose sequence', and choose the 'L2a.seq'. Don't forget to click 'Load sequence'. Sending triggers: After you clicked on 'start emulation' you can send triggers in two ways: - Single triggers, for this just click on 'Generate SW Start signal(s)'. - Or triggers with a certain rate. For this, click on 'not selected' and choose BC. You can switch the BC downscaling hex value to a decimal value by right clicking on the value. Rates can also be entered in a more convenient manner than the downscaling factor: <blockquote style="background-color: lightgrey; border: solid thin grey;"> BC downscaling factor is an integer number (32 bits) giving the number of BCs (25ns) between 2 triggers.<br> Examples:<br> 0 -> BC rate (40 Mhz)<br> 1 -> 40/2 Mhz rate<br> 4000-> generate 1 Start signal per 100 micsecs<br> ...<br><br> or use: s (seconds, ms (miliseconds, us (microseconds), for period or:<br> hz (hertz), khz (kilohertz), mhz (megahertz) for rate.<br> 3s -> 3 seconds<br> 10 ms -> 10 miliseconds period<br> 3 khz -> 3 khz rate<br> </blockquote> After each change of this value, you have to press Enter (or move the mouse cursor out of the testbox). You can see the changed value in the status window. = Busybox stuff = From the busybox DCS board, you find some bitfiles to program and setup the Busybox under: /mnt/kjekspc7/rbo021/busybox_files. You can program the busybox with the program.sh script: ./program.sh busybox_fpga1.bit busybox_fpga2.bit If you ommit the second bitfile, a dummy bitfile is used and only 1 FPGA programmed. = Datataking with date = #Start date from the drorc machine as date user with the command: 'startdate'. #Take the lock by clicking on the white open lock symbol. #Click on the right arrows until the 'Ready to start' is highlighted, and the button underneath is clickable. #Click on Start processes. On the LDC display, the green icon should move down to the point 'Waiting start of data', and the LDC status display should reset its numbers, then show 2 Sub-events recorded. These are the Start of Run Events. #Then press start. #You then can send triggers from the LTU with the CTP emulator. #The procedure is always: Start run, Start sending triggers, Stop sending triggers, Stop run.If you send triggers while there is no run, the Events remain in the RCU and are not being read out, which makes the run the stuck and the RCU will have to be reset. The Busybox has to be reset between each run anyway with the bbinit.sh script. Always make sure to release the lock before you close date, otherwise the drorc machine has to be rebooted. =FAQ= ===The Date/LTU Window don't open=== Make sure you have the '-X' in the ssh command. ===The lock in date is red and I can't take it=== Someone else has date opened and has the lock, or date was closed without releasing the lock first. Reboot the date machine. ===There is an error message '1146' in the InfoBrowser=== That's normal. ===I want to see older messages in the InfoBrowser=== Unhighlight the 'Online' on the lower right side, then press 'Query'. ===How can I add another drorc equipment?=== editDb on the drorc machine. ===How is the physmem on the drorc machine set up?=== *alonegdc ipc 1000000 control,eventbuilder 2 *aloneldc ipc 1048756 control,readoutReadyFifo 1 *aloneldc ipc 1048756 readout 3 *aloneldc ipc 1048756 readoutFirstLevelVectors 4 *aloneldc ipc 1048756 readoutSecondLevelVectors 6 *aloneldc physmem /dev/physmem1 524288000 readoutDataPages 7 ===Which equipements are needed?=== drorc3006_0 *EqId: 2 *rorcRevision: 3 *rorcSerialNb: 3006 *rorcChannelNb: 0 *dataSource: 0 (Fec) *mrorcId: 7 (for this one) drorc_trigger 7e29ac1bd77c0313a50fdba95ee9a8436a309c3d 559 558 2009-05-29T07:58:31Z Dfe002 7 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Log into the LTU: "ssh -X ltu@vme1". # Log into the RCU dcs board: "ssh dcs0031". # Log into the Busybox DCS board: "ssh dcs0055". # Start the infoBrowser on the drorc machine with the command "infoBrowser". = Configuring the RCU = On the RCU, execute the script /etc/boot/S40configure.sh. This does several things: - turning on the Front End Cards - Setting the correct L2 Latency - Switching to LTU trigger Then, as the date user from the drorc machine, execute the alias 'conf-fec'. This configures the RCU and FECs via the DDL for Data readout, but unfortunately also for Software triggers. Therefor, execute the S40configure.sh script on the dcs0031 once again. = LTU stuff = On the LTU, execute 'vmecrate ltu'. This should pop up two windows on your machine. In the ltu window, click on Configuration-> TTCInit, and then Configuration->LTUInit. Click on 'CTP Emulator' to open the CTP Emulator window. Click on 'click here to choose sequence', and choose the 'L2a.seq'. Don't forget to click 'Load sequence'. Sending triggers: After you clicked on 'start emulation' you can send triggers in two ways: - Single triggers, for this just click on 'Generate SW Start signal(s)'. - Or triggers with a certain rate. For this, click on 'not selected' and choose BC. You can switch the BC downscaling hex value to a decimal value by right clicking on the value. Rates can also be entered in a more convenient manner than the downscaling factor: <blockquote style="background-color: lightgrey; border: solid thin grey;"> BC downscaling factor is an integer number (32 bits) giving the number of BCs (25ns) between 2 triggers.<br> Examples:<br> 0 -> BC rate (40 Mhz)<br> 1 -> 40/2 Mhz rate<br> 4000-> generate 1 Start signal per 100 micsecs<br> ...<br><br> or use: s (seconds, ms (miliseconds, us (microseconds), for period or:<br> hz (hertz), khz (kilohertz), mhz (megahertz) for rate.<br> 3s -> 3 seconds<br> 10 ms -> 10 miliseconds period<br> 3 khz -> 3 khz rate<br> </blockquote> After each change of this value, you have to press Enter (or move the mouse cursor out of the testbox). You can see the changed value in the status window. = Busybox stuff = From the busybox DCS board, you find some bitfiles to program and setup the Busybox under: /mnt/kjekspc7/rbo021/busybox_files. You can program the busybox with the program.sh script: ./program.sh busybox_fpga1.bit busybox_fpga2.bit If you ommit the second bitfile, a dummy bitfile is used and only 1 FPGA programmed. = Datataking with date = #Start date from the drorc machine as date user with the command: 'startdate'. #Take the lock by clicking on the white open lock symbol. #Click on the right arrows until the 'Ready to start' is highlighted, and the button underneath is clickable. #Click on Start processes. On the LDC display, the green icon should move down to the point 'Waiting start of data', and the LDC status display should reset its numbers, then show 2 Sub-events recorded. These are the Start of Run Events. #Then press start. #You then can send triggers from the LTU with the CTP emulator. #The procedure is always: Start run, Start sending triggers, Stop sending triggers, Stop run.If you send triggers while there is no run, the Events remain in the RCU and are not being read out, which makes the run the stuck and the RCU will have to be reset. The Busybox has to be reset between each run anyway with the bbinit.sh script. Always make sure to release the lock before you close date, otherwise the drorc machine has to be rebooted. =FAQ= ===The Date/LTU Window don't open=== Make sure you have the '-X' in the ssh command. ===The lock in date is red and I can't take it=== Someone else has date opened and has the lock, or date was closed without releasing the lock first. Reboot the date machine. ===There is an error message '1146' in the InfoBrowser=== That's normal. ===I want to see older messages in the InfoBrowser=== Unhighlight the 'Online' on the lower right side, then press 'Query'. ===How can I add another drorc equipment?=== editDb on the drorc machine. After changing the database, you have to go back to the 'Disconnected Configuration' in the DAQ RunControl for the new values to get fetched from the database. ===How is the physmem on the drorc machine set up?=== *alonegdc ipc 1000000 control,eventbuilder 2 *aloneldc ipc 1048756 control,readoutReadyFifo 1 *aloneldc ipc 1048756 readout 3 *aloneldc ipc 1048756 readoutFirstLevelVectors 4 *aloneldc ipc 1048756 readoutSecondLevelVectors 6 *aloneldc physmem /dev/physmem1 524288000 readoutDataPages 7 ===Which equipements are needed?=== drorc3006_0 *EqId: 2 *rorcRevision: 3 *rorcSerialNb: 3006 *rorcChannelNb: 0 *dataSource: 0 (Fec) *mrorcId: 7 (for this one) drorc_trigger c7071019984ce9e0fbdb23028d5d6d1d3dc75c8e 640 559 2009-08-21T14:28:52Z Nfyku 4 wikitext text/x-wiki === How to run the RCU - DRORC - Busybox setup === This shall be a step by step introduction on how to operate the setup and test Busybox firmware. For now this will be a collection of the necessary steps, but in a later stage the configuration part will become more automated. You need access to the following systems: - DRORC PC - RCU - Busybox - Local trigger unit (LTU) Setting up the system and getting ready to take data: = More general stuff = # Log into the Drorc machine as the date user. # Log into the LTU: "ssh -X ltu@vme1". # Log into the RCU dcs board: "ssh dcs0031". # Log into the Busybox DCS board: "ssh dcs0055". # Start the infoBrowser on the drorc machine with the command "infoBrowser". = Configuring the RCU = On the RCU, execute the script /etc/boot/S40configure.sh. This does several things: - turning on the Front End Cards - Setting the correct L2 Latency - Switching to LTU trigger Then, as the date user from the drorc machine, execute the alias 'conf-fec'. This configures the RCU and FECs via the DDL for Data readout, but unfortunately also for Software triggers. Therefore, execute the S40configure.sh script on the dcs0031 once again. = LTU stuff = On the LTU, execute 'vmecrate ltu'. This should pop up two windows on your machine. In the ltu window, click on Configuration-> TTCInit, and then Configuration->LTUInit. Click on 'CTP Emulator' to open the CTP Emulator window. Click on 'click here to choose sequence', and choose the 'L2a.seq'. Don't forget to click 'Load sequence'. Sending triggers: After you clicked on 'start emulation' you can send triggers in two ways: - Single triggers, for this just click on 'Generate SW Start signal(s)'. - Or triggers with a certain rate. For this, click on 'not selected' and choose BC. You can switch the BC downscaling hex value to a decimal value by right clicking on the value. Rates can also be entered in a more convenient manner than the downscaling factor: <blockquote style="background-color: lightgrey; border: solid thin grey;"> BC downscaling factor is an integer number (32 bits) giving the number of BCs (25ns) between 2 triggers.<br> Examples:<br> 0 -> BC rate (40 Mhz)<br> 1 -> 40/2 Mhz rate<br> 4000-> generate 1 Start signal per 100 micsecs<br> ...<br><br> or use: s (seconds, ms (miliseconds, us (microseconds), for period or:<br> hz (hertz), khz (kilohertz), mhz (megahertz) for rate.<br> 3s -> 3 seconds<br> 10 ms -> 10 miliseconds period<br> 3 khz -> 3 khz rate<br> </blockquote> After each change of this value, you have to press Enter (or move the mouse cursor out of the testbox). You can see the changed value in the status window. = Busybox stuff = From the busybox DCS board, you find some bitfiles to program and setup the Busybox under: /mnt/kjekspc7/rbo021/busybox_files. You can program the busybox with the program.sh script: ./program busybox_fpga1.bit busybox_fpga2.bit If you omit the second bitfile, a dummy bitfile is used and only 1 FPGA programmed. = Datataking with date = #Start date from the drorc machine as date user with the command: 'startdate'. #Take the lock by clicking on the white open lock symbol. #Click on the right arrows until the 'Ready to start' is highlighted, and the button underneath is clickable. #Click on Start processes. On the LDC display, the green icon should move down to the point 'Waiting start of data', and the LDC status display should reset its numbers, then show 2 Sub-events recorded. These are the Start of Run Events. #Then press start. #You then can send triggers from the LTU with the CTP emulator. #The procedure is always: Start run, Start sending triggers, Stop sending triggers, Stop run.If you send triggers while there is no run, the Events remain in the RCU and are not being read out, which makes the run the stuck and the RCU will have to be reset. The Busybox has to be reset between each run anyway with the bbinit.sh script. Always make sure to release the lock before you close date, otherwise the drorc machine has to be rebooted. =FAQ= ===The Date/LTU Window don't open=== Make sure you have the '-X' in the ssh command. ===The lock in date is red and I can't take it=== Someone else has date opened and has the lock, or date was closed without releasing the lock first. Reboot the date machine. ===There is an error message '1146' in the InfoBrowser=== That's normal. ===I want to see older messages in the InfoBrowser=== Unhighlight the 'Online' on the lower right side, then press 'Query'. ===How can I add another drorc equipment?=== editDb on the drorc machine. After changing the database, you have to go back to the 'Disconnected Configuration' in the DAQ RunControl for the new values to get fetched from the database. ===How is the physmem on the drorc machine set up?=== *alonegdc ipc 1000000 control,eventbuilder 2 *aloneldc ipc 1048756 control,readoutReadyFifo 1 *aloneldc ipc 1048756 readout 3 *aloneldc ipc 1048756 readoutFirstLevelVectors 4 *aloneldc ipc 1048756 readoutSecondLevelVectors 6 *aloneldc physmem /dev/physmem1 524288000 readoutDataPages 7 ===Which equipements are needed?=== drorc3006_0 *EqId: 2 *rorcRevision: 3 *rorcSerialNb: 3006 *rorcChannelNb: 0 *dataSource: 0 (Fec) *mrorcId: 7 (for this one) drorc_trigger 69c865a817fab575515b7b459e73041bab58bc76 User:Pro027 2 188 566 2009-06-04T09:21:48Z Tbu082 19 Created page with 'Peter Rosendahl' wikitext text/x-wiki Peter Rosendahl d2ffb7430c4148ff264299d8f8a262ed1427438f Microelectronics group 0 25 567 460 2009-06-05T13:04:07Z St12361 17 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]] XJTAG Demo Board Tutorial Files and Instructions * [[PHYS321]] Øvingsoppgaver i PHYS321 [[Category:Mikroelektronikk]] 66d457667951c554e49a2fda19a01b1db91cfeb9 572 567 2009-06-05T13:27:24Z St12361 17 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[PHYS321]] Øvingsoppgaver i PHYS321 [[Category:Mikroelektronikk]] 7cfa3b9e29c6327915f4b5f355515656770ecdd4 646 572 2009-08-24T08:24:05Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[PHYS222]] Fagressurser for PHYS222 * [[PHYS321]] Øvingsoppgaver i PHYS321 [[Category:Mikroelektronikk]] 42d5810b55b888c6041a304ec59eb0027fe6e5a7 XJTAG 0 189 568 2009-06-05T13:13:49Z St12361 17 Created page with 'This concerns users running latest version of XJTAG SW with the XJ-Tag Demo Board v 1.2. Latest version of XJ-TAG SW is avaliable on request at: [http://www.XJTAG.com XJTAG.com]...' wikitext text/x-wiki This concerns users running latest version of XJTAG SW with the XJ-Tag Demo Board v 1.2. Latest version of XJ-TAG SW is avaliable on request at: [http://www.XJTAG.com XJTAG.com] The example files and tutorial that accompanies new versions of the XJ-TAG SW is not fully compatible with the XJ-TAG Demo board labeled v 1.2 that is avaliable at IFT. All original files for the XJTAG Demo Board v 1.2 is zipped in this file: [[File:XJTAG-DB-1_2.zip]] 992738d97d8ee5be4e93a7c78f89e386136c67af 569 568 2009-06-05T13:21:33Z St12361 17 wikitext text/x-wiki This concerns users running latest version of XJTAG SW with the XJ-Tag Demo Board v 1.2. Latest version of XJ-TAG SW is avaliable on request at: [http://www.XJTAG.com XJTAG.com] The example files and tutorial that accompanies new versions of the XJ-TAG SW is not fully compatible with the XJ-TAG Demo board labeled v 1.2 that is avaliable at IFT. First of all the Netlist must be exchanged with the original. Download netlist for v1.2 of the Demo Board here: [[File:Demo.Net.txt]] aff8d8e7aae28bea4c52f62ddffec2a245684717 570 569 2009-06-05T13:26:16Z St12361 17 wikitext text/x-wiki This concerns users running latest version of XJTAG SW with the XJ-Tag Demo Board v 1.2. Latest version of XJ-TAG SW is avaliable on request at: [http://www.XJTAG.com XJTAG.com] The example files and tutorial that accompanies new versions of the XJ-TAG SW is not fully compatible with the XJ-TAG Demo board labeled v 1.2 that is avaliable at IFT. First of all the Netlist must be exchanged with the original. Download netlist for v1.2 of the Demo Board here: * [[Demo.Net]] XJTAG Demo Board Tutorial Files and Instructions 38e3e56a8eb388445b06f5878451a86953b3dab9 Demo.Net 0 190 571 2009-06-05T13:26:38Z St12361 17 Created page with '.HEA .APP "Cadstar RINF Output - Version 2.3" .UNI INCH 1000.0 in .TYP FULL .JOB "XJTAGDEMOV3" .ADD_COM C1 "0805" .ATT_COM C1 "Supplier" "RE" .ATT_COM C1 "PCB Footprint" "0805"...' wikitext text/x-wiki .HEA .APP "Cadstar RINF Output - Version 2.3" .UNI INCH 1000.0 in .TYP FULL .JOB "XJTAGDEMOV3" .ADD_COM C1 "0805" .ATT_COM C1 "Supplier" "RE" .ATT_COM C1 "PCB Footprint" "0805" .ATT_COM C1 "timestamp" "000CFE8C" .ATT_COM C1 "Type" "Y5V 50V" .ATT_COM C1 "Source Package" "CAP NP" .ATT_COM C1 "Order Code" "71-1400" .ATT_COM C1 "Value" "100nF" .ADD_COM C10 "0805" .ATT_COM C10 "Supplier" "RE" .ATT_COM C10 "PCB Footprint" "0805" .ATT_COM C10 "timestamp" "000C1A25" .ATT_COM C10 "Type" "Y5V 50V" .ATT_COM C10 "Source Package" "CAP NP" .ATT_COM C10 "Order Code" "71-1395" .ATT_COM C10 "Value" "47nF" .ADD_COM C11 "0805" .ATT_COM C11 "Supplier" "RE" .ATT_COM C11 "PCB Footprint" "0805" .ATT_COM C11 "timestamp" "000C1A3D" .ATT_COM C11 "Type" "Y5V 50V" .ATT_COM C11 "Source Package" "CAP NP" .ATT_COM C11 "Order Code" "71-1395" .ATT_COM C11 "Value" "47nF" .ADD_COM C2 "0805" .ATT_COM C2 "Supplier" "RE" .ATT_COM C2 "PCB Footprint" "0805" .ATT_COM C2 "timestamp" "000CFC8A" .ATT_COM C2 "Type" "Y5V 50V" .ATT_COM C2 "Source Package" "CAP NP" .ATT_COM C2 "Order Code" "71-1395" .ATT_COM C2 "Value" "47nF" .ADD_COM C3 "2.5mm pitch 6.3mmdia" .ATT_COM C3 "Cost100" ".14" .ATT_COM C3 "Supplier" "Newsham" .ATT_COM C3 "PCB Footprint" "2.5mm pitch 6.3mmdia" .ATT_COM C3 "Cost1" "0.16" .ATT_COM C3 "timestamp" "0007DF6F" .ATT_COM C3 "Type" "Low ESR" .ATT_COM C3 "Source Package" "CAPACITOR POL" .ATT_COM C3 "Manu" "Rubycon" .ATT_COM C3 "Order Code" "768-080" .ATT_COM C3 "Value" "220uF10v" .ATT_COM C3 "Cost25" ".16" .ATT_COM C3 "Man Ref" "10ZL220M6.3X11" .ADD_COM C4 "0805" .ATT_COM C4 "Supplier" "RE" .ATT_COM C4 "PCB Footprint" "0805" .ATT_COM C4 "timestamp" "0007643A" .ATT_COM C4 "Type" "Y5V 50V" .ATT_COM C4 "Source Package" "CAP NP" .ATT_COM C4 "Order Code" "71-1395" .ATT_COM C4 "Value" "47nF" .ADD_COM C5 "0805" .ATT_COM C5 "Supplier" "RE" .ATT_COM C5 "PCB Footprint" "0805" .ATT_COM C5 "timestamp" "000311A9" .ATT_COM C5 "Type" "Y5V 50V" .ATT_COM C5 "Source Package" "CAP NP" .ATT_COM C5 "Order Code" "71-1395" .ATT_COM C5 "Value" "47nF" .ADD_COM C6 "0805" .ATT_COM C6 "Supplier" "RE" .ATT_COM C6 "PCB Footprint" "0805" .ATT_COM C6 "timestamp" "000311C1" .ATT_COM C6 "Type" "Y5V 50V" .ATT_COM C6 "Source Package" "CAP NP" .ATT_COM C6 "Order Code" "71-1395" .ATT_COM C6 "Value" "47nF" .ADD_COM C7 "0805" .ATT_COM C7 "Supplier" "RE" .ATT_COM C7 "PCB Footprint" "0805" .ATT_COM C7 "timestamp" "0002B06B" .ATT_COM C7 "Type" "Y5V 50V" .ATT_COM C7 "Source Package" "CAP NP" .ATT_COM C7 "Order Code" "71-1395" .ATT_COM C7 "Value" "47nF" .ADD_COM C8 "0805" .ATT_COM C8 "Supplier" "RE" .ATT_COM C8 "PCB Footprint" "0805" .ATT_COM C8 "timestamp" "0002B0FB" .ATT_COM C8 "Type" "Y5V 50V" .ATT_COM C8 "Source Package" "CAP NP" .ATT_COM C8 "Order Code" "71-1395" .ATT_COM C8 "Value" "47nF" .ADD_COM C9 "0805" .ATT_COM C9 "Supplier" "RE" .ATT_COM C9 "PCB Footprint" "0805" .ATT_COM C9 "timestamp" "0002B0C3" .ATT_COM C9 "Type" "Y5V 50V" .ATT_COM C9 "Source Package" "CAP NP" .ATT_COM C9 "Order Code" "71-1395" .ATT_COM C9 "Value" "47nF" .ADD_COM CN1 "20 Way RA Box header socket" .ATT_COM CN1 "Cost100" "0.695" .ATT_COM CN1 "Supplier" "RE" .ATT_COM CN1 "Cost1" "0.85" .ATT_COM CN1 "PCB Footprint" "20 Way RA Box header socket" .ATT_COM CN1 "timestamp" "0007EBB1" .ATT_COM CN1 "Source Package" "CON20A" .ATT_COM CN1 "Order Code" "22-4140" .ATT_COM CN1 "Value" "CON20A" .ADD_COM CN2 "2x2.54mm holes" .ATT_COM CN2 "Fitted" "nf" .ATT_COM CN2 "PCB Footprint" "2x2.54mm holes" .ATT_COM CN2 "timestamp" "000D429A" .ATT_COM CN2 "Source Package" "CON2" .ATT_COM CN2 "Value" "2pin" .ADD_COM CN3 "20way DIL" .ATT_COM CN3 "Cost100" "0.065" .ATT_COM CN3 "Supplier" "RE" .ATT_COM CN3 "Cost1" "0.11" .ATT_COM CN3 "PCB Footprint" "20way DIL" .ATT_COM CN3 "timestamp" "000C9077" .ATT_COM CN3 "Cost50" "0.07" .ATT_COM CN3 "Source Package" "DIL socket20way" .ATT_COM CN3 "Order Code" "22-0170" .ATT_COM CN3 "Value" "DIL socket20way" .ADD_COM D1 "SOT23" .ATT_COM D1 "Cost100" "0.11" .ATT_COM D1 "Supplier" "RE" .ATT_COM D1 "PCB Footprint" "SOT23" .ATT_COM D1 "timestamp" "000CC264" .ATT_COM D1 "Source Package" "LED BI-COLOUR_0" .ATT_COM D1 "Cost10" "0.15" .ATT_COM D1 "Manu" "KingBright" .ATT_COM D1 "Order Code" "72-8795" .ATT_COM D1 "Value" "Red/Green" .ATT_COM D1 "Man Ref" "KM23 series" .ADD_COM D2 "SOT23" .ATT_COM D2 "Cost100" "0.11" .ATT_COM D2 "Supplier" "RE" .ATT_COM D2 "PCB Footprint" "SOT23" .ATT_COM D2 "timestamp" "000CC122" .ATT_COM D2 "Source Package" "LED BI-COLOUR_0" .ATT_COM D2 "Cost10" "0.15" .ATT_COM D2 "Manu" "KingBright" .ATT_COM D2 "Order Code" "72-8795" .ATT_COM D2 "Value" "Red/Green" .ATT_COM D2 "Man Ref" "KM23 series" .ADD_COM D3 "SOT23" .ATT_COM D3 "Cost100" "0.11" .ATT_COM D3 "Supplier" "RE" .ATT_COM D3 "PCB Footprint" "SOT23" .ATT_COM D3 "timestamp" "000CBFE0" .ATT_COM D3 "Source Package" "LED BI-COLOUR_0" .ATT_COM D3 "Cost10" "0.15" .ATT_COM D3 "Manu" "KingBright" .ATT_COM D3 "Order Code" "72-8795" .ATT_COM D3 "Value" "Red/Green" .ATT_COM D3 "Man Ref" "KM23 series" .ADD_COM D4 "SOT23" .ATT_COM D4 "Cost100" "0.11" .ATT_COM D4 "Supplier" "RE" .ATT_COM D4 "PCB Footprint" "SOT23" .ATT_COM D4 "timestamp" "000CC340" .ATT_COM D4 "Source Package" "LED BI-COLOUR_0" .ATT_COM D4 "Cost10" "0.15" .ATT_COM D4 "Manu" "KingBright" .ATT_COM D4 "Order Code" "72-8795" .ATT_COM D4 "Value" "Red/Green" .ATT_COM D4 "Man Ref" "KM23 series" .ADD_COM D5 "SOT23" .ATT_COM D5 "Cost100" "0.11" .ATT_COM D5 "Supplier" "RE" .ATT_COM D5 "PCB Footprint" "SOT23" .ATT_COM D5 "timestamp" "000CC1FE" .ATT_COM D5 "Source Package" "LED BI-COLOUR_0" .ATT_COM D5 "Cost10" "0.15" .ATT_COM D5 "Manu" "KingBright" .ATT_COM D5 "Order Code" "72-8795" .ATT_COM D5 "Value" "Red/Green" .ATT_COM D5 "Man Ref" "KM23 series" .ADD_COM D6 "SOT23" .ATT_COM D6 "Cost100" "0.11" .ATT_COM D6 "Supplier" "RE" .ATT_COM D6 "PCB Footprint" "SOT23" .ATT_COM D6 "timestamp" "000CC0BC" .ATT_COM D6 "Source Package" "LED BI-COLOUR_0" .ATT_COM D6 "Cost10" "0.15" .ATT_COM D6 "Manu" "KingBright" .ATT_COM D6 "Order Code" "72-8795" .ATT_COM D6 "Value" "Red/Green" .ATT_COM D6 "Man Ref" "KM23 series" .ADD_COM D7 "SOT23" .ATT_COM D7 "Cost100" "0.11" .ATT_COM D7 "Supplier" "RE" .ATT_COM D7 "PCB Footprint" "SOT23" .ATT_COM D7 "timestamp" "000CC2BC" .ATT_COM D7 "Source Package" "LED BI-COLOUR_0" .ATT_COM D7 "Cost10" "0.15" .ATT_COM D7 "Manu" "KingBright" .ATT_COM D7 "Order Code" "72-8795" .ATT_COM D7 "Value" "Red/Green" .ATT_COM D7 "Man Ref" "KM23 series" .ADD_COM D8 "SOT23" .ATT_COM D8 "Cost100" "0.11" .ATT_COM D8 "Supplier" "RE" .ATT_COM D8 "PCB Footprint" "SOT23" .ATT_COM D8 "timestamp" "000CC17A" .ATT_COM D8 "Source Package" "LED BI-COLOUR_0" .ATT_COM D8 "Cost10" "0.15" .ATT_COM D8 "Manu" "KingBright" .ATT_COM D8 "Order Code" "72-8795" .ATT_COM D8 "Value" "Red/Green" .ATT_COM D8 "Man Ref" "KM23 series" .ADD_COM D9 "SOT23" .ATT_COM D9 "Cost100" "0.11" .ATT_COM D9 "Supplier" "RE" .ATT_COM D9 "PCB Footprint" "SOT23" .ATT_COM D9 "timestamp" "000CC038" .ATT_COM D9 "Source Package" "LED BI-COLOUR_0" .ATT_COM D9 "Cost10" "0.15" .ATT_COM D9 "Manu" "KingBright" .ATT_COM D9 "Order Code" "72-8795" .ATT_COM D9 "Value" "Red/Green" .ATT_COM D9 "Man Ref" "KM23 series" .ADD_COM IC1 "SO14" .ATT_COM IC1 "Supplier" "FEC" .ATT_COM IC1 "PCB Footprint" "SO14" .ATT_COM IC1 "timestamp" "000CFAD0" .ATT_COM IC1 "Source Package" "74HC04/SO" .ATT_COM IC1 "Order Code" "379-268" .ATT_COM IC1 "Value" "74HC14" .ADD_COM IC2 "CS48" .ATT_COM IC2 "Supplier" "Insight" .ATT_COM IC2 "PCB Footprint" "CS48" .ATT_COM IC2 "Cost1" "$0.99" .ATT_COM IC2 "timestamp" "000C8277" .ATT_COM IC2 "Source Package" "XC9536/VFP_1" .ATT_COM IC2 "Manu" "Xilinx" .ATT_COM IC2 "Man ref" "XC9536XL-10CS48C" .ATT_COM IC2 "Value" "XC9536XL" .ADD_COM IC3 "44 TQFP" .ATT_COM IC3 "Supplier" "Unique" .ATT_COM IC3 "PCB Footprint" "44 TQFP" .ATT_COM IC3 "timestamp" "000C89EA" .ATT_COM IC3 "Source Package" "EPM3032A" .ATT_COM IC3 "Value" "EPM3032A" .ADD_COM IC4 "SO8" .ATT_COM IC4 "Cost100" "0.45" .ATT_COM IC4 "Supplier" "FEC" .ATT_COM IC4 "PCB Footprint" "SO8" .ATT_COM IC4 "Cost1" "0.65" .ATT_COM IC4 "timestamp" "000854DF" .ATT_COM IC4 "Source Package" "24LC01B/SO" .ATT_COM IC4 "Manu" "Microchip" .ATT_COM IC4 "Cost10" "0.53" .ATT_COM IC4 "Order Code" "300-1647" .ATT_COM IC4 "Value" "24LC32A" .ATT_COM IC4 "Man Ref" "24LC32A/SN" .ADD_COM IC5 "SMT 24" .ATT_COM IC5 "Cost100" "0.8" .ATT_COM IC5 "Supplier" "FEC" .ATT_COM IC5 "PCB Footprint" "SMT 24" .ATT_COM IC5 "Cost1" "1.26" .ATT_COM IC5 "timestamp" "000C9105" .ATT_COM IC5 "Source Package" "HM6116" .ATT_COM IC5 "Manu" "HT" .ATT_COM IC5 "Cost10" ".96" .ATT_COM IC5 "Order Code" "115-861" .ATT_COM IC5 "Value" "HT6116" .ATT_COM IC5 "Man Ref" "HT6116-70S" .ADD_COM JP1 "4x2x2.54mm Holes" .ATT_COM JP1 "Cost100" "0.04" .ATT_COM JP1 "Supplier" "RE" .ATT_COM JP1 "PCB Footprint" "4x2x2.54mm Holes" .ATT_COM JP1 "Cost1" "0.06" .ATT_COM JP1 "timestamp" "000D3012" .ATT_COM JP1 "Source Package" "JUMPER4" .ATT_COM JP1 "Order Code" "22-0555" .ATT_COM JP1 "Value" "JUMPER4" .ADD_COM JP2 "4x2x2.54mm Holes" .ATT_COM JP2 "Cost100" "0.04" .ATT_COM JP2 "Supplier" "RE" .ATT_COM JP2 "PCB Footprint" "4x2x2.54mm Holes" .ATT_COM JP2 "Cost1" "0.06" .ATT_COM JP2 "timestamp" "000D3162" .ATT_COM JP2 "Source Package" "JUMPER4" .ATT_COM JP2 "Order Code" "22-0555" .ATT_COM JP2 "Value" "JUMPER4" .ADD_COM JP3 "4x2x2.54mm Holes" .ATT_COM JP3 "Cost100" "0.04" .ATT_COM JP3 "Supplier" "RE" .ATT_COM JP3 "PCB Footprint" "4x2x2.54mm Holes" .ATT_COM JP3 "Cost1" "0.06" .ATT_COM JP3 "timestamp" "000D2B1D" .ATT_COM JP3 "Source Package" "JUMPER4" .ATT_COM JP3 "Order Code" "22-0555" .ATT_COM JP3 "Value" "JUMPER4" .ADD_COM JP4 "10x1x2.54mm holes" .ATT_COM JP4 "Cost100" "0.04" .ATT_COM JP4 "Supplier" "RE" .ATT_COM JP4 "Cost1" "0.006" .ATT_COM JP4 "PCB Footprint" "10x1x2.54mm holes" .ATT_COM JP4 "timestamp" "000C97FA" .ATT_COM JP4 "Source Package" "JUMPER10_0" .ATT_COM JP4 "Order Code" "22-0515" .ATT_COM JP4 "Value" "JUMPhalf" .ADD_COM JP5 "10x2x 2.54mm holes" .ATT_COM JP5 "Cost100" "0.08" .ATT_COM JP5 "Supplier" "RE" .ATT_COM JP5 "Cost1" "0.12" .ATT_COM JP5 "PCB Footprint" "10x2x 2.54mm holes" .ATT_COM JP5 "timestamp" "000C95CE" .ATT_COM JP5 "Source Package" "JUMPER10" .ATT_COM JP5 "Order Code" "22-0565" .ATT_COM JP5 "Value" "JUMPER10" .ADD_COM JP6 "10x2x 2.54mm holes" .ATT_COM JP6 "Cost100" "0.08" .ATT_COM JP6 "Supplier" "RE" .ATT_COM JP6 "Cost1" "0.12" .ATT_COM JP6 "PCB Footprint" "10x2x 2.54mm holes" .ATT_COM JP6 "timestamp" "000C9EF3" .ATT_COM JP6 "Source Package" "JUMPER10" .ATT_COM JP6 "Order Code" "22-0565" .ATT_COM JP6 "Value" "JUMPER10" .ADD_COM JP7 "10x1x2.54mm holes" .ATT_COM JP7 "Cost100" "0.04" .ATT_COM JP7 "Supplier" "RE" .ATT_COM JP7 "Cost1" "0.006" .ATT_COM JP7 "PCB Footprint" "10x1x2.54mm holes" .ATT_COM JP7 "timestamp" "000CA363" .ATT_COM JP7 "Source Package" "JUMPER10_0" .ATT_COM JP7 "Order Code" "22-0515" .ATT_COM JP7 "Value" "JUMPhalf" .ADD_COM R1 "0805" .ATT_COM R1 "Cost100" "0.006" .ATT_COM R1 "Supplier" "RE" .ATT_COM R1 "PCB Footprint" "0805" .ATT_COM R1 "Cost1" "0.023" .ATT_COM R1 "timestamp" "000CFEB8" .ATT_COM R1 "Cost1000" "0.00710" .ATT_COM R1 "Pack" "100" .ATT_COM R1 "Source Package" "R" .ATT_COM R1 "Order Code" "72-0442" .ATT_COM R1 "Value" "10M" .ATT_COM R1 "Cost25" "0.023" .ADD_COM R10 "0805" .ATT_COM R10 "Cost100" "0.006" .ATT_COM R10 "Supplier" "RE" .ATT_COM R10 "PCB Footprint" "0805" .ATT_COM R10 "Cost1" "0.023" .ATT_COM R10 "timestamp" "000CC1DA" .ATT_COM R10 "Cost1000" "0.00710" .ATT_COM R10 "Pack" "100" .ATT_COM R10 "Source Package" "R" .ATT_COM R10 "Order Code" "72-4392" .ATT_COM R10 "Value" "120R" .ATT_COM R10 "Cost25" "0.023" .ADD_COM R11 "0805" .ATT_COM R11 "Cost100" "0.006" .ATT_COM R11 "Supplier" "RE" .ATT_COM R11 "PCB Footprint" "0805" .ATT_COM R11 "Cost1" "0.023" .ATT_COM R11 "timestamp" "000CC098" .ATT_COM R11 "Cost1000" "0.00710" .ATT_COM R11 "Pack" "100" .ATT_COM R11 "Source Package" "R" .ATT_COM R11 "Order Code" "72-4392" .ATT_COM R11 "Value" "120R" .ATT_COM R11 "Cost25" "0.023" .ADD_COM R12 "0805" .ATT_COM R12 "Cost100" "0.006" .ATT_COM R12 "Supplier" "RE" .ATT_COM R12 "PCB Footprint" "0805" .ATT_COM R12 "timestamp" "000DAEC9" .ATT_COM R12 "Pack" "100" .ATT_COM R12 "Source Package" "R" .ATT_COM R12 "Value" "8.2K" .ADD_COM R13 "0805" .ATT_COM R13 "Cost100" "0.006" .ATT_COM R13 "Supplier" "RE" .ATT_COM R13 "PCB Footprint" "0805" .ATT_COM R13 "timestamp" "000DAFE7" .ATT_COM R13 "Pack" "100" .ATT_COM R13 "Source Package" "R" .ATT_COM R13 "Value" "8.2K" .ADD_COM R14 "0805" .ATT_COM R14 "Cost100" "0.006" .ATT_COM R14 "Supplier" "RE" .ATT_COM R14 "PCB Footprint" "0805" .ATT_COM R14 "Cost1" "0.023" .ATT_COM R14 "timestamp" "000CC2A0" .ATT_COM R14 "Cost1000" "0.00710" .ATT_COM R14 "Pack" "100" .ATT_COM R14 "Source Package" "R" .ATT_COM R14 "Order Code" "72-4392" .ATT_COM R14 "Value" "120R" .ATT_COM R14 "Cost25" "0.023" .ADD_COM R15 "0805" .ATT_COM R15 "Cost100" "0.006" .ATT_COM R15 "Supplier" "RE" .ATT_COM R15 "PCB Footprint" "0805" .ATT_COM R15 "Cost1" "0.023" .ATT_COM R15 "timestamp" "000CC15E" .ATT_COM R15 "Cost1000" "0.00710" .ATT_COM R15 "Pack" "100" .ATT_COM R15 "Source Package" "R" .ATT_COM R15 "Order Code" "72-4392" .ATT_COM R15 "Value" "120R" .ATT_COM R15 "Cost25" "0.023" .ADD_COM R16 "0805" .ATT_COM R16 "Cost100" "0.006" .ATT_COM R16 "Supplier" "RE" .ATT_COM R16 "PCB Footprint" "0805" .ATT_COM R16 "Cost1" "0.023" .ATT_COM R16 "timestamp" "000CC01C" .ATT_COM R16 "Cost1000" "0.00710" .ATT_COM R16 "Pack" "100" .ATT_COM R16 "Source Package" "R" .ATT_COM R16 "Order Code" "72-4392" .ATT_COM R16 "Value" "120R" .ATT_COM R16 "Cost25" "0.023" .ADD_COM R17 "0805" .ATT_COM R17 "Cost100" "0.006" .ATT_COM R17 "Supplier" "RE" .ATT_COM R17 "PCB Footprint" "0805" .ATT_COM R17 "Cost1" "0.023" .ATT_COM R17 "timestamp" "000CC284" .ATT_COM R17 "Cost1000" "0.00710" .ATT_COM R17 "Pack" "100" .ATT_COM R17 "Source Package" "R" .ATT_COM R17 "Order Code" "72-4392" .ATT_COM R17 "Value" "120R" .ATT_COM R17 "Cost25" "0.023" .ADD_COM R18 "0805" .ATT_COM R18 "Cost100" "0.006" .ATT_COM R18 "Supplier" "RE" .ATT_COM R18 "PCB Footprint" "0805" .ATT_COM R18 "Cost1" "0.023" .ATT_COM R18 "timestamp" "000CC142" .ATT_COM R18 "Cost1000" "0.00710" .ATT_COM R18 "Pack" "100" .ATT_COM R18 "Source Package" "R" .ATT_COM R18 "Order Code" "72-4392" .ATT_COM R18 "Value" "120R" .ATT_COM R18 "Cost25" "0.023" .ADD_COM R19 "0805" .ATT_COM R19 "Cost100" "0.006" .ATT_COM R19 "Supplier" "RE" .ATT_COM R19 "PCB Footprint" "0805" .ATT_COM R19 "Cost1" "0.023" .ATT_COM R19 "timestamp" "000CC000" .ATT_COM R19 "Cost1000" "0.00710" .ATT_COM R19 "Pack" "100" .ATT_COM R19 "Source Package" "R" .ATT_COM R19 "Order Code" "72-4392" .ATT_COM R19 "Value" "120R" .ATT_COM R19 "Cost25" "0.023" .ADD_COM R2 "0805" .ATT_COM R2 "Cost100" "0.006" .ATT_COM R2 "Supplier" "RE" .ATT_COM R2 "PCB Footprint" "0805" .ATT_COM R2 "Cost1" "0.023" .ATT_COM R2 "timestamp" "000CFBEB" .ATT_COM R2 "Cost1000" "0.00710" .ATT_COM R2 "Pack" "100" .ATT_COM R2 "Source Package" "R" .ATT_COM R2 "Order Code" "72-0397" .ATT_COM R2 "Value" "1M" .ATT_COM R2 "Cost25" "0.023" .ADD_COM R20 "0805" .ATT_COM R20 "Cost100" "0.006" .ATT_COM R20 "Supplier" "RE" .ATT_COM R20 "PCB Footprint" "0805" .ATT_COM R20 "Cost1" "0.023" .ATT_COM R20 "timestamp" "000CC2F0" .ATT_COM R20 "Cost1000" "0.00710" .ATT_COM R20 "Pack" "100" .ATT_COM R20 "Source Package" "R" .ATT_COM R20 "Order Code" "72-4392" .ATT_COM R20 "Value" "120R" .ATT_COM R20 "Cost25" "0.023" .ADD_COM R21 "0805" .ATT_COM R21 "Cost100" "0.006" .ATT_COM R21 "Supplier" "RE" .ATT_COM R21 "PCB Footprint" "0805" .ATT_COM R21 "Cost1" "0.023" .ATT_COM R21 "timestamp" "000CC1AE" .ATT_COM R21 "Cost1000" "0.00710" .ATT_COM R21 "Pack" "100" .ATT_COM R21 "Source Package" "R" .ATT_COM R21 "Order Code" "72-4392" .ATT_COM R21 "Value" "120R" .ATT_COM R21 "Cost25" "0.023" .ADD_COM R22 "0805" .ATT_COM R22 "Cost100" "0.006" .ATT_COM R22 "Supplier" "RE" .ATT_COM R22 "PCB Footprint" "0805" .ATT_COM R22 "Cost1" "0.023" .ATT_COM R22 "timestamp" "000CC06C" .ATT_COM R22 "Cost1000" "0.00710" .ATT_COM R22 "Pack" "100" .ATT_COM R22 "Source Package" "R" .ATT_COM R22 "Order Code" "72-4392" .ATT_COM R22 "Value" "120R" .ATT_COM R22 "Cost25" "0.023" .ADD_COM R23 "0805" .ATT_COM R23 "Cost100" "0.006" .ATT_COM R23 "Supplier" "RE" .ATT_COM R23 "PCB Footprint" "0805" .ATT_COM R23 "Cost1" "0.023" .ATT_COM R23 "timestamp" "000CC23C" .ATT_COM R23 "Cost1000" "0.00710" .ATT_COM R23 "Pack" "100" .ATT_COM R23 "Source Package" "R" .ATT_COM R23 "Order Code" "72-4392" .ATT_COM R23 "Value" "120R" .ATT_COM R23 "Cost25" "0.023" .ADD_COM R24 "0805" .ATT_COM R24 "Cost100" "0.006" .ATT_COM R24 "Supplier" "RE" .ATT_COM R24 "PCB Footprint" "0805" .ATT_COM R24 "Cost1" "0.023" .ATT_COM R24 "timestamp" "000CC0FA" .ATT_COM R24 "Cost1000" "0.00710" .ATT_COM R24 "Pack" "100" .ATT_COM R24 "Source Package" "R" .ATT_COM R24 "Order Code" "72-4392" .ATT_COM R24 "Value" "120R" .ATT_COM R24 "Cost25" "0.023" .ADD_COM R25 "0805" .ATT_COM R25 "Cost100" "0.006" .ATT_COM R25 "Supplier" "RE" .ATT_COM R25 "PCB Footprint" "0805" .ATT_COM R25 "Cost1" "0.023" .ATT_COM R25 "timestamp" "000CBFB8" .ATT_COM R25 "Cost1000" "0.00710" .ATT_COM R25 "Pack" "100" .ATT_COM R25 "Source Package" "R" .ATT_COM R25 "Order Code" "72-4392" .ATT_COM R25 "Value" "120R" .ATT_COM R25 "Cost25" "0.023" .ADD_COM R26 "0805" .ATT_COM R26 "Cost100" "0.006" .ATT_COM R26 "Supplier" "RE" .ATT_COM R26 "PCB Footprint" "0805" .ATT_COM R26 "Cost1" "0.023" .ATT_COM R26 "timestamp" "000CC2D8" .ATT_COM R26 "Cost1000" "0.00710" .ATT_COM R26 "Pack" "100" .ATT_COM R26 "Source Package" "R" .ATT_COM R26 "Order Code" "72-4392" .ATT_COM R26 "Value" "120R" .ATT_COM R26 "Cost25" "0.023" .ADD_COM R27 "0805" .ATT_COM R27 "Cost100" "0.006" .ATT_COM R27 "Supplier" "RE" .ATT_COM R27 "PCB Footprint" "0805" .ATT_COM R27 "Cost1" "0.023" .ATT_COM R27 "timestamp" "000CC196" .ATT_COM R27 "Cost1000" "0.00710" .ATT_COM R27 "Pack" "100" .ATT_COM R27 "Source Package" "R" .ATT_COM R27 "Order Code" "72-4392" .ATT_COM R27 "Value" "120R" .ATT_COM R27 "Cost25" "0.023" .ADD_COM R28 "0805" .ATT_COM R28 "Cost100" "0.006" .ATT_COM R28 "Supplier" "RE" .ATT_COM R28 "PCB Footprint" "0805" .ATT_COM R28 "Cost1" "0.023" .ATT_COM R28 "timestamp" "000CC054" .ATT_COM R28 "Cost1000" "0.00710" .ATT_COM R28 "Pack" "100" .ATT_COM R28 "Source Package" "R" .ATT_COM R28 "Order Code" "72-4392" .ATT_COM R28 "Value" "120R" .ATT_COM R28 "Cost25" "0.023" .ADD_COM R29 "0805" .ATT_COM R29 "Cost100" "0.006" .ATT_COM R29 "Supplier" "RE" .ATT_COM R29 "PCB Footprint" "0805" .ATT_COM R29 "timestamp" "000DAA80" .ATT_COM R29 "Pack" "100" .ATT_COM R29 "Source Package" "R" .ATT_COM R29 "Value" "8.2K" .ADD_COM R3 "0805" .ATT_COM R3 "Cost100" "0.006" .ATT_COM R3 "Supplier" "RE" .ATT_COM R3 "PCB Footprint" "0805" .ATT_COM R3 "timestamp" "000DADEB" .ATT_COM R3 "Pack" "100" .ATT_COM R3 "Source Package" "R" .ATT_COM R3 "Value" "8.2K" .ADD_COM R30 "0805" .ATT_COM R30 "Cost100" "0.006" .ATT_COM R30 "Supplier" "RE" .ATT_COM R30 "PCB Footprint" "0805" .ATT_COM R30 "timestamp" "000DB08F" .ATT_COM R30 "Pack" "100" .ATT_COM R30 "Source Package" "R" .ATT_COM R30 "Value" "8.2K" .ADD_COM R31 "0805" .ATT_COM R31 "Cost100" "0.006" .ATT_COM R31 "Supplier" "RE" .ATT_COM R31 "PCB Footprint" "0805" .ATT_COM R31 "timestamp" "000DB0BB" .ATT_COM R31 "Pack" "100" .ATT_COM R31 "Source Package" "R" .ATT_COM R31 "Value" "8.2K" .ADD_COM R32 "0805" .ATT_COM R32 "Cost100" "0.006" .ATT_COM R32 "Supplier" "RE" .ATT_COM R32 "PCB Footprint" "0805" .ATT_COM R32 "timestamp" "000DB0D3" .ATT_COM R32 "Pack" "100" .ATT_COM R32 "Source Package" "R" .ATT_COM R32 "Value" "8.2K" .ADD_COM R33 "0805" .ATT_COM R33 "Cost100" "0.006" .ATT_COM R33 "Supplier" "RE" .ATT_COM R33 "PCB Footprint" "0805" .ATT_COM R33 "timestamp" "000DB12B" .ATT_COM R33 "Pack" "100" .ATT_COM R33 "Source Package" "R" .ATT_COM R33 "Value" "8.2K" .ADD_COM R34 "0805" .ATT_COM R34 "Cost100" "0.006" .ATT_COM R34 "Supplier" "RE" .ATT_COM R34 "PCB Footprint" "0805" .ATT_COM R34 "timestamp" "000DB143" .ATT_COM R34 "Pack" "100" .ATT_COM R34 "Source Package" "R" .ATT_COM R34 "Value" "8.2K" .ADD_COM R35 "0805" .ATT_COM R35 "Cost100" "0.006" .ATT_COM R35 "Supplier" "RE" .ATT_COM R35 "PCB Footprint" "0805" .ATT_COM R35 "timestamp" "000DB15B" .ATT_COM R35 "Pack" "100" .ATT_COM R35 "Source Package" "R" .ATT_COM R35 "Value" "8.2K" .ADD_COM R36 "0805" .ATT_COM R36 "Cost100" "0.006" .ATT_COM R36 "Supplier" "RE" .ATT_COM R36 "PCB Footprint" "0805" .ATT_COM R36 "timestamp" "000DB173" .ATT_COM R36 "Pack" "100" .ATT_COM R36 "Source Package" "R" .ATT_COM R36 "Value" "8.2K" .ADD_COM R37 "0805" .ATT_COM R37 "Cost100" "0.006" .ATT_COM R37 "Supplier" "RE" .ATT_COM R37 "PCB Footprint" "0805" .ATT_COM R37 "timestamp" "000DB1DB" .ATT_COM R37 "Pack" "100" .ATT_COM R37 "Source Package" "R" .ATT_COM R37 "Value" "8.2K" .ADD_COM R38 "0805" .ATT_COM R38 "Cost100" "0.006" .ATT_COM R38 "Supplier" "RE" .ATT_COM R38 "PCB Footprint" "0805" .ATT_COM R38 "timestamp" "000DB1F3" .ATT_COM R38 "Pack" "100" .ATT_COM R38 "Source Package" "R" .ATT_COM R38 "Value" "8.2K" .ADD_COM R39 "0805" .ATT_COM R39 "Cost100" "0.006" .ATT_COM R39 "Supplier" "RE" .ATT_COM R39 "PCB Footprint" "0805" .ATT_COM R39 "timestamp" "000DB20B" .ATT_COM R39 "Pack" "100" .ATT_COM R39 "Source Package" "R" .ATT_COM R39 "Value" "8.2K" .ADD_COM R4 "0805" .ATT_COM R4 "Cost100" "0.006" .ATT_COM R4 "Supplier" "RE" .ATT_COM R4 "PCB Footprint" "0805" .ATT_COM R4 "timestamp" "000DACD7" .ATT_COM R4 "Pack" "100" .ATT_COM R4 "Source Package" "R" .ATT_COM R4 "Value" "8.2K" .ADD_COM R40 "0805" .ATT_COM R40 "Cost100" "0.006" .ATT_COM R40 "Supplier" "RE" .ATT_COM R40 "PCB Footprint" "0805" .ATT_COM R40 "timestamp" "000DB223" .ATT_COM R40 "Pack" "100" .ATT_COM R40 "Source Package" "R" .ATT_COM R40 "Value" "8.2K" .ADD_COM R41 "0805" .ATT_COM R41 "Cost100" "0.006" .ATT_COM R41 "Supplier" "RE" .ATT_COM R41 "PCB Footprint" "0805" .ATT_COM R41 "timestamp" "000DB23B" .ATT_COM R41 "Pack" "100" .ATT_COM R41 "Source Package" "R" .ATT_COM R41 "Value" "8.2K" .ADD_COM R42 "0805" .ATT_COM R42 "Cost100" "0.006" .ATT_COM R42 "Supplier" "RE" .ATT_COM R42 "PCB Footprint" "0805" .ATT_COM R42 "timestamp" "000DB253" .ATT_COM R42 "Pack" "100" .ATT_COM R42 "Source Package" "R" .ATT_COM R42 "Value" "8.2K" .ADD_COM R43 "0805" .ATT_COM R43 "Cost100" "0.006" .ATT_COM R43 "Supplier" "RE" .ATT_COM R43 "PCB Footprint" "0805" .ATT_COM R43 "timestamp" "000DB26B" .ATT_COM R43 "Pack" "100" .ATT_COM R43 "Source Package" "R" .ATT_COM R43 "Value" "8.2K" .ADD_COM R44 "0805" .ATT_COM R44 "Cost100" "0.006" .ATT_COM R44 "Supplier" "RE" .ATT_COM R44 "PCB Footprint" "0805" .ATT_COM R44 "timestamp" "000DB283" .ATT_COM R44 "Pack" "100" .ATT_COM R44 "Source Package" "R" .ATT_COM R44 "Value" "8.2K" .ADD_COM R45 "0805" .ATT_COM R45 "Cost100" "0.006" .ATT_COM R45 "Supplier" "RE" .ATT_COM R45 "PCB Footprint" "0805" .ATT_COM R45 "timestamp" "000DB80E" .ATT_COM R45 "Pack" "100" .ATT_COM R45 "Source Package" "R" .ATT_COM R45 "Value" "8.2K" .ADD_COM R46 "0805" .ATT_COM R46 "Cost100" "0.006" .ATT_COM R46 "Supplier" "RE" .ATT_COM R46 "PCB Footprint" "0805" .ATT_COM R46 "timestamp" "000DB826" .ATT_COM R46 "Pack" "100" .ATT_COM R46 "Source Package" "R" .ATT_COM R46 "Value" "8.2K" .ADD_COM R47 "0805" .ATT_COM R47 "Cost100" "0.006" .ATT_COM R47 "Supplier" "RE" .ATT_COM R47 "PCB Footprint" "0805" .ATT_COM R47 "timestamp" "000DB83E" .ATT_COM R47 "Pack" "100" .ATT_COM R47 "Source Package" "R" .ATT_COM R47 "Value" "8.2K" .ADD_COM R48 "0805" .ATT_COM R48 "Cost100" "0.006" .ATT_COM R48 "Supplier" "RE" .ATT_COM R48 "PCB Footprint" "0805" .ATT_COM R48 "timestamp" "000DB856" .ATT_COM R48 "Pack" "100" .ATT_COM R48 "Source Package" "R" .ATT_COM R48 "Value" "8.2K" .ADD_COM R49 "0805" .ATT_COM R49 "Cost100" "0.006" .ATT_COM R49 "Supplier" "RE" .ATT_COM R49 "Cost1" "0.023" .ATT_COM R49 "PCB Footprint" "0805" .ATT_COM R49 "timestamp" "000DE221" .ATT_COM R49 "Pack" "100" .ATT_COM R49 "Cost1000" "0.00710" .ATT_COM R49 "Source Package" "R" .ATT_COM R49 "Order Code" "72-4392" .ATT_COM R49 "Value" "120R" .ATT_COM R49 "Cost25" "0.023" .ADD_COM R5 "0805" .ATT_COM R5 "Cost100" "0.006" .ATT_COM R5 "Supplier" "RE" .ATT_COM R5 "PCB Footprint" "0805" .ATT_COM R5 "Cost1" "0.023" .ATT_COM R5 "timestamp" "000D12E8" .ATT_COM R5 "Cost1000" "0.00710" .ATT_COM R5 "Pack" "100" .ATT_COM R5 "Source Package" "R" .ATT_COM R5 "Order Code" "72-4392" .ATT_COM R5 "Value" "120R" .ATT_COM R5 "Cost25" "0.023" .ADD_COM R50 "0805" .ATT_COM R50 "Cost100" "0.006" .ATT_COM R50 "Supplier" "RE" .ATT_COM R50 "Cost1" "0.023" .ATT_COM R50 "PCB Footprint" "0805" .ATT_COM R50 "timestamp" "000DAABD" .ATT_COM R50 "Cost1000" "0.00710" .ATT_COM R50 "Pack" "100" .ATT_COM R50 "Source Package" "R" .ATT_COM R50 "Order Code" "72-4392" .ATT_COM R50 "Value" "120R" .ATT_COM R50 "Cost25" "0.023" .ADD_COM R6 "0805" .ATT_COM R6 "Cost100" "0.006" .ATT_COM R6 "Supplier" "RE" .ATT_COM R6 "PCB Footprint" "0805" .ATT_COM R6 "Cost1" "0.023" .ATT_COM R6 "timestamp" "000D29A6" .ATT_COM R6 "Cost1000" "0.00710" .ATT_COM R6 "Pack" "100" .ATT_COM R6 "Source Package" "R" .ATT_COM R6 "Order Code" "72-4392" .ATT_COM R6 "Value" "120R" .ATT_COM R6 "Cost25" "0.023" .ADD_COM R7 "0805" .ATT_COM R7 "Cost100" "0.006" .ATT_COM R7 "Supplier" "RE" .ATT_COM R7 "PCB Footprint" "0805" .ATT_COM R7 "Cost1" "0.023" .ATT_COM R7 "timestamp" "000D29D3" .ATT_COM R7 "Cost1000" "0.00710" .ATT_COM R7 "Pack" "100" .ATT_COM R7 "Source Package" "R" .ATT_COM R7 "Order Code" "72-4392" .ATT_COM R7 "Value" "120R" .ATT_COM R7 "Cost25" "0.023" .ADD_COM R8 "0805" .ATT_COM R8 "Cost100" "0.006" .ATT_COM R8 "Supplier" "RE" .ATT_COM R8 "PCB Footprint" "0805" .ATT_COM R8 "Cost1" "0.023" .ATT_COM R8 "timestamp" "000D29EE" .ATT_COM R8 "Cost1000" "0.00710" .ATT_COM R8 "Pack" "100" .ATT_COM R8 "Source Package" "R" .ATT_COM R8 "Order Code" "72-4392" .ATT_COM R8 "Value" "120R" .ATT_COM R8 "Cost25" "0.023" .ADD_COM R9 "0805" .ATT_COM R9 "Cost100" "0.006" .ATT_COM R9 "Supplier" "RE" .ATT_COM R9 "PCB Footprint" "0805" .ATT_COM R9 "Cost1" "0.023" .ATT_COM R9 "timestamp" "000CC31C" .ATT_COM R9 "Cost1000" "0.00710" .ATT_COM R9 "Pack" "100" .ATT_COM R9 "Source Package" "R" .ATT_COM R9 "Order Code" "72-4392" .ATT_COM R9 "Value" "120R" .ATT_COM R9 "Cost25" "0.023" .ADD_COM SW1 "see data" .ATT_COM SW1 "Cost100" "0.135" .ATT_COM SW1 "Supplier" "RE" .ATT_COM SW1 "Cost1" "0.18" .ATT_COM SW1 "PCB Footprint" "see data" .ATT_COM SW1 "timestamp" "000D3EFB" .ATT_COM SW1 "Source Package" "SW_T_SPDT" .ATT_COM SW1 "Order Code" "76-0265" .ATT_COM SW1 "Value" "SW_T_SPDT" .ATT_COM SW1 "Man Ref" "SS-5806-012 series vertical" .ADD_COM SW2 "SMT" .ATT_COM SW2 "Cost100" "0.22" .ATT_COM SW2 "Supplier" "RE" .ATT_COM SW2 "PCB Footprint" "SMT" .ATT_COM SW2 "Cost1" "0.28" .ATT_COM SW2 "timestamp" "000C8C6F" .ATT_COM SW2 "Source Package" "SW_TC_SPST" .ATT_COM SW2 "Manu" "Diptronics" .ATT_COM SW2 "Order Code" "72-4190" .ATT_COM SW2 "Man ref" "DTSMW-66N" .ATT_COM SW2 "Value" "Button" .ADD_COM SW3 "SMT" .ATT_COM SW3 "Cost100" "0.22" .ATT_COM SW3 "Supplier" "RE" .ATT_COM SW3 "PCB Footprint" "SMT" .ATT_COM SW3 "Cost1" "0.28" .ATT_COM SW3 "timestamp" "000C7E1B" .ATT_COM SW3 "Source Package" "SW_TC_SPST" .ATT_COM SW3 "Manu" "Diptronics" .ATT_COM SW3 "Order Code" "72-4190" .ATT_COM SW3 "Man ref" "DTSMW-66N" .ATT_COM SW3 "Value" "Button" .ADD_TER IC3 42 "ALT0" .TER JP1 2 .ADD_TER IC3 38 "ALT2" .TER JP1 6 .ADD_TER IC3 35 "ALT3" .TER JP1 8 .ADD_TER IC2 G6 "XIL1" .TER JP1 3 .ADD_TER IC2 E5 "XIL3" .TER JP1 7 .ADD_TER IC2 E7 "XIL2" .TER JP1 5 .ADD_TER IC2 F5 "XIL0" .TER JP1 1 .ADD_TER JP2 1 "N864718" .TER IC5 9 .ADD_TER JP2 3 "N864801" .TER IC5 10 .ADD_TER JP2 5 "N864884" .TER IC5 11 .ADD_TER JP2 7 "N864967" .TER IC5 13 .ADD_TER IC2 D7 "NET0" .TER IC3 34 .ADD_TER IC2 D6 "NET1" .TER IC3 33 .ADD_TER IC3 39 "NALT1" .TER IC1 2 .ADD_TER R1 2 "N851510" .TER IC1 3 C1 1 .ADD_TER IC1 4 "N851502" .TER R1 1 IC1 5 .ADD_TER IC1 6 "CLOCKS" .TER IC3 37 IC2 B7 .ADD_TER IC1 10 "CLOCKF" .TER IC3 40 IC2 B6 .ADD_TER IC1 9 "N851026" .TER R2 2 C2 1 .ADD_TER IC1 8 "N850953" .TER R2 1 IC1 11 .ADD_TER IC5 21 "NWE" .TER IC3 28 R48 1 .ADD_TER IC5 20 "NOE" .TER IC3 31 R47 1 .ADD_TER IC1 7 "GND" .TER CN1 4 IC2 F3 JP7 3 JP7 2 IC3 4 C6 2 C7 2 C2 2 IC1 13 CN2 2 CN1 3 CN1 11 IC5 12 CN1 12 C1 2 IC2 A5 JP4 8 JP4 7 JP4 5 JP4 4 JP4 3 JP4 2 CN1 10 IC5 18 SW2 2 JP7 5 JP7 4 CN1 6 CN1 8 IC3 16 C11 2 IC3 30 JP7 8 JP7 7 IC4 4 R39 1 R38 1 R42 1 R41 1 R37 1 R36 1 R32 1 R31 1 R29 1 R45 1 R44 1 CN1 19 R46 1 C5 2 JP4 1 JP7 9 C9 2 JP7 10 IC3 24 R33 1 IC4 7 IC3 11 CN1 14 CN1 16 R34 1 IC4 3 CN1 20 D1 1 R43 1 C3 2 D9 1 D3 1 C8 2 R40 1 JP4 6 D4 1 JP7 6 C10 2 IC4 1 R50 2 CN1 18 R35 1 C4 2 JP4 10 IC3 36 D6 1 D8 1 JP4 9 D7 1 SW3 2 SW1 3 D2 1 R30 1 IC2 D1 IC4 2 D5 1 JP7 1 .ADD_TER IC1 14 "3.3V" .TER R13 2 CN1 1 IC2 C1 IC2 G3 IC2 F7 R12 2 R3 2 R4 2 IC4 8 JP5 1 JP5 5 JP5 3 JP5 7 JP5 9 JP5 11 JP5 13 JP5 15 JP5 19 JP5 17 JP6 20 JP6 18 JP6 14 JP6 12 JP6 2 JP6 4 JP6 6 JP6 8 JP6 10 JP6 16 IC3 29 IC3 9 IC3 17 IC3 41 C5 1 C4 1 C11 1 C10 1 C7 1 C6 1 C9 1 C8 1 C3 1 IC5 24 SW1 1 CN2 1 R48 2 R47 2 .ADD_TER R3 1 "SDA" .TER IC4 5 IC3 43 IC2 G7 .ADD_TER R4 1 "SCL" .TER IC4 6 IC3 44 IC2 A7 .ADD_TER JP6 11 "DIL14" .TER CN3 15 IC5 2 IC3 22 R43 2 .ADD_TER CN3 4 "DIL3" .TER JP5 8 JP2 8 IC3 6 R32 2 .ADD_TER CN3 1 "DIL0" .TER JP5 2 JP2 2 IC3 2 R29 2 .ADD_TER CN3 10 "DIL9" .TER JP5 20 IC5 7 IC3 15 R38 2 .ADD_TER JP6 15 "DIL12" .TER CN3 13 IC5 4 IC3 20 R41 2 .ADD_TER CN3 5 "DIL4" .TER JP5 10 IC5 14 IC3 8 R33 2 .ADD_TER JP6 19 "DIL10" .TER CN3 11 IC5 6 IC3 18 R39 2 .ADD_TER JP6 17 "DIL11" .TER CN3 12 IC5 5 IC3 19 R40 2 .ADD_TER JP6 3 "DIL18" .TER CN3 19 IC2 F6 R7 2 .ADD_TER CN3 2 "DIL1" .TER JP5 4 JP2 4 IC3 3 R30 2 .ADD_TER JP6 1 "DIL19" .TER CN3 20 IC2 E6 R8 2 .ADD_TER JP6 13 "DIL13" .TER CN3 14 IC5 3 IC3 21 R42 2 .ADD_TER CN3 6 "DIL5" .TER JP5 12 IC5 15 IC3 10 R34 2 .ADD_TER JP6 5 "DIL17" .TER CN3 18 IC3 27 R6 2 R46 2 .ADD_TER CN3 3 "DIL2" .TER JP5 6 JP2 6 IC3 5 R31 2 .ADD_TER CN3 8 "DIL7" .TER JP5 16 IC5 17 IC3 13 R36 2 .ADD_TER IC3 32 "N895353" .TER R49 1 .ADD_TER JP6 7 "DIL16" .TER CN3 17 IC3 25 R5 2 R45 2 .ADD_TER CN3 9 "DIL8" .TER JP5 18 IC5 8 IC3 14 R37 2 .ADD_TER D5 2 "N835810" .TER R21 1 .ADD_TER R10 2 "LED6" .TER IC2 B2 .ADD_TER CN3 7 "DIL6" .TER JP5 14 IC5 16 IC3 12 R35 2 .ADD_TER R27 2 "LED11" .TER IC2 E1 .ADD_TER JP6 9 "DIL15" .TER CN3 16 IC3 23 R44 2 .ADD_TER R22 2 "LED15" .TER IC2 F2 .ADD_TER R9 2 "LED0" .TER IC2 A6 .ADD_TER D5 3 "N836102" .TER R18 1 .ADD_TER CN1 5 "TDI" .TER IC2 B3 .ADD_TER D8 2 "N835914" .TER R27 1 .ADD_TER R21 2 "LED9" .TER IC2 C3 .ADD_TER IC2 G2 "TDO/TDI" .TER IC3 1 .ADD_TER CN1 7 "TMS" .TER IC2 A2 IC3 7 .ADD_TER D3 3 "N835564" .TER R11 1 .ADD_TER CN1 13 "TDO" .TER R49 2 .ADD_TER D1 3 "N836208" .TER R9 1 .ADD_TER CN1 9 "TCLK" .TER IC3 26 IC2 A1 R50 1 .ADD_TER D7 2 "N836236" .TER R26 1 .ADD_TER R16 2 "LED13" .TER IC2 F1 .ADD_TER R18 2 "LED8" .TER IC2 C2 .ADD_TER D9 2 "N835592" .TER R28 1 .ADD_TER R14 2 "LED1" .TER IC2 C5 .ADD_TER D2 2 "N835970" .TER R15 1 .ADD_TER D3 2 "N835648" .TER R16 1 .ADD_TER D6 2 "N835488" .TER R22 1 .ADD_TER R19 2 "LED14" .TER IC2 G1 .ADD_TER R23 2 "LED4" .TER IC2 B4 .ADD_TER R26 2 "LED5" .TER IC2 A3 .ADD_TER R15 2 "LED7" .TER IC2 B1 .ADD_TER R25 2 "LED16" .TER IC2 E3 .ADD_TER R28 2 "LED17" .TER IC2 G4 .ADD_TER D1 2 "N836292" .TER R14 1 .ADD_TER R17 2 "LED2" .TER IC2 B5 .ADD_TER D6 3 "N835780" .TER R19 1 .ADD_TER D4 3 "N836424" .TER R17 1 .ADD_TER D7 3 "N836388" .TER R23 1 .ADD_TER R20 2 "LED3" .TER IC2 A4 .ADD_TER R24 2 "LED10" .TER IC2 D2 .ADD_TER D8 3 "N836066" .TER R24 1 .ADD_TER D2 3 "N835886" .TER R10 1 .ADD_TER D9 3 "N835744" .TER R25 1 .ADD_TER D4 2 "N836132" .TER R20 1 .ADD_TER R11 2 "LED12" .TER IC2 E2 .ADD_TER R13 1 "BUT1" .TER SW3 3 IC2 G5 .ADD_TER R12 1 "BUT0" .TER SW2 3 IC2 F4 .ADD_TER JP3 3 "N848809" .TER R6 1 .ADD_TER JP3 1 "N848870" .TER R5 1 .ADD_TER JP3 5 "N848931" .TER R7 1 .ADD_TER JP3 7 "N848992" .TER R8 1 .ADD_TER CN1 15 "GP0" .TER IC2 C7 .ADD_TER IC2 C6 "GP1" .TER SW1 2 CN1 17 .ADD_TER IC5 1 "N863487" .TER JP3 2 .ADD_TER IC5 23 "N863570" .TER JP3 4 .ADD_TER IC5 22 "N863653" .TER JP3 6 .ADD_TER IC5 19 "N863736" .TER JP3 8 .ADD_TER JP1 4 "ALT1" .TER IC1 1 .END 416966fa52d58d24b23b39c8dadb7e3e2a36da28 Detector lab 0 21 573 391 2009-06-08T07:27:48Z Hsa061 18 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] df104925bfd350b08e16b3459f0b7104b142a898 577 573 2009-06-09T08:58:11Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] 1b29e6678c0b864ff54d95615a9a053e550e205f 626 577 2009-08-19T10:43:51Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] == Upcoming meetings and conferences== * TWEPP 09, Paris, 21.-25.09.09: http://twepp09.lal.in2p3.fr/ * CALICE Collaboration Autumn Meeting, Lyon, 16.-18.09.09 * RD09, Florence, 30.09.-02.10.09: http://www.fi.infn.it/conferenze/rd09/ 62ed802323b0faf3f303b9ba1a3d7ce0d2e9ece6 627 626 2009-08-19T10:47:49Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == Lab equipment list, how to's, equipment service log's etc... * [[Lab Equipment]] == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] == Upcoming meetings and conferences== * CALICE Collaboration Autumn Meeting, Lyon, 16.-18.09.09 * TWEPP 09, Paris, 21.-25.09.09: http://twepp09.lal.in2p3.fr/ * RD09, Florence, 30.09.-02.10.09: http://www.fi.infn.it/conferenze/rd09/ 1e232af7ec4b78178ebfdb88d5ebfb2a82448b0c 628 627 2009-08-19T11:37:20Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == * [[Lab equipment list]] - instruments we have available, manuals, how to's * [[Wishlist]] - put the things here that you need for your projects == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] == Upcoming meetings and conferences== * CALICE Collaboration Autumn Meeting, Lyon, 16.-18.09.09 * TWEPP 09, Paris, 21.-25.09.09: http://twepp09.lal.in2p3.fr/ * RD09, Florence, 30.09.-02.10.09: http://www.fi.infn.it/conferenze/rd09/ 83c7ab10013414efd16a4cb90ac226b9dce321cf 629 628 2009-08-19T11:38:55Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] Lab equipment list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] == Upcoming meetings and conferences== * CALICE Collaboration Autumn Meeting, Lyon, 16.-18.09.09 * TWEPP 09, Paris, 21.-25.09.09: http://twepp09.lal.in2p3.fr/ * RD09, Florence, 30.09.-02.10.09: http://www.fi.infn.it/conferenze/rd09/ ee2bdad860cc3c812b38de8b21c20fb4b7bce5b9 631 629 2009-08-19T11:42:17Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] == Upcoming meetings and conferences== * CALICE Collaboration Autumn Meeting, Lyon, 16.-18.09.09 * TWEPP 09, Paris, 21.-25.09.09: http://twepp09.lal.in2p3.fr/ * RD09, Florence, 30.09.-02.10.09: http://www.fi.infn.it/conferenze/rd09/ 77e34392227319d00d1b4da7e7bbd97f13ed1b52 632 631 2009-08-19T11:42:39Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] == Upcoming meetings and conferences== * CALICE Collaboration Autumn Meeting, Lyon, 16.-18.09.09 * TWEPP 09, Paris, 21.-25.09.09: http://twepp09.lal.in2p3.fr/ * RD09, Florence, 30.09.-02.10.09: http://www.fi.infn.it/conferenze/rd09/ 78fd1cfff03ce74c7871b26e49ad508864bec679 633 632 2009-08-19T11:43:36Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Where are we? == * The main laboratory is situated in the 3rd floor at the IFT, room 332. == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The clean room * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] [[older presentations]] == Upcoming meetings and conferences== * CALICE Collaboration Autumn Meeting, Lyon, 16.-18.09.09 * TWEPP 09, Paris, 21.-25.09.09: http://twepp09.lal.in2p3.fr/ * RD09, Florence, 30.09.-02.10.09: http://www.fi.infn.it/conferenze/rd09/ 1cf431f1976d55a537fc56ace8f74771f58c1efb 634 633 2009-08-21T07:17:42Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] [[older presentations]] == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ 89fe8749b86e00ece9e66333f8c327dd6de0e735 635 634 2009-08-21T07:22:10Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] [[older presentations]] == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. 8b3f67473d94cb23161b795ff50a2e7301aa2f1e The muon spectrometer 0 191 574 2009-06-08T07:34:33Z Hsa061 18 Created page with '== Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays primarily in collaboration with high school students and tea...' wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays primarily in collaboration with high school students and teachers, but master students will also be involved in the upgrade and extension of this system. == General description == To be provided... == More information == * Øyvind's thesis which gives a good description of our setup. A link to this thesis will be provided. * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 381fb6fcdb9c4a95e214a30de90a954a6a863021 PET Project 0 22 578 407 2009-06-12T09:06:50Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === [[Image:MAPD_radiotracer.JPG‎|frame|right|200px|Fluorodeoxyglucose-FDG]] [[Image:MAPD_positronelectronannihilation.JPG‎‎|frame|left|200px|Positron - Electron Annihilation]] The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === [[Image:MAPD_crystaltransition.JPG‎ |frame|left|200px|Electronic transition in a crystal]] A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === [[Image:MAPD_coincidenceprinciple.JPG‎ |frame|none|200px|Coincidence detection principle]] In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. [[Image:MAPD_coincidencecategories.JPG|frame||200px|3 different coincidence detection events]] * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. [[Image:MAPD tofprinciple.jpg‎ |frame|none|200px|Time of flight principle]] [[Image:MAPD tofprinciple2.JPG|frame|none|200px|Time of flight principle]] == Technology == === Avalanche Photodiodes === [[Image:MAPD structure.jpg‎|frame|right|200px|Structure of MAPD]] An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. [[Image:MAPD proportionalmode.jpg‎ ‎|frame|right|200px|proportional mode]] * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. [[Image:MAPD geigermode.jpg‎‎|frame|right|200px|Geiger mode]] [[Image:MAPD_passivequenching.jpg‎‎|frame|right|200px|passive quenching]] The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. [[User:Dfe002|Dominik]] 09:06, 12 June 2009 (UTC) [[Category:Detector lab]] 7104ae250dcd9dcf06023af2b7c5dcc59346a1af 579 578 2009-06-12T09:08:28Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === [[Image:MAPD_radiotracer.JPG‎|frame|right|200px|Fluorodeoxyglucose-FDG]] [[Image:MAPD_positronelectronannihilation.JPG‎‎|frame|left|200px|Positron - Electron Annihilation]] The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === [[Image:MAPD_crystaltransition.JPG‎ |frame|left|200px|Electronic transition in a crystal]] A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === [[Image:MAPD_coincidenceprinciple.JPG‎ |frame|none|200px|Coincidence detection principle]] In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. [[Image:MAPD_coincidencecategories.JPG|frame||200px|3 different coincidence detection events]] * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. [[Image:MAPD tofprinciple.jpg‎ |frame|none|200px|Time of flight principle]] [[Image:MAPD tofprinciple2.JPG|frame|none|200px|Time of flight principle]] == Technology == === Avalanche Photodiodes === [[Image:MAPD structure.jpg‎|frame|right|200px|Structure of MAPD]] An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. [[Image:MAPD proportionalmode.jpg‎ ‎|frame|right|200px|proportional mode]] * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. [[Image:MAPD geigermode.jpg‎‎|frame|right|200px|Geiger mode]] [[Image:MAPD_passivequenching.jpg‎‎|frame|right|200px|passive quenching]] The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. === Documentation === [[User:Dfe002|Dominik]] 09:06, 12 June 2009 (UTC) [[Category:Detector lab]] 7e3b37af69797e2b8dbe9d9a37be39d95708bf4f 580 579 2009-06-12T09:12:53Z Dfe002 7 wikitext text/x-wiki == Goal == The MEDUSA project focuses on R&D for high energy physics instrumentation with two important and dependant goals. One is to contribute to the research for future particle detectors and develop new improved detectors for the LHC upgrade as well as the planned international linear collider. The other is to provide new technologies for medical imaging devices such as PET. With this, we hope to contribute to bridging the gap between the particle physics research and the medical technology to fully take advantage of the latest development. [[Image:PETEscan.jpg|frameless|none|500px]] Two complementary detector technologies are highly interesting for medical applications. First, the compact calorimeter is a new technology for detection of photons and hadrons, based on a new type of silicon photomultipliers. These detectors form the base of modern medical imaging technology where precise localisation of radioactive tracers in the body. Aquisition speed and sensitivity are two central challenges for high energy physics. In addition, these detectors can be used to develop Time-of-Flight measurements. The 3D semiconductor devices are based on another new technology, aiming to provide particle and radiation detection by the use of 3 dimensional silicon pixels. The advantage of this method is that these sensors have improved radiation hardness as well as a better to-the-edge detection. A substancial challenge is to provide thin devices and 3D integration, one of the requirement for linear accelerators. Semiconductor detectors are widely used in imaging spectroscopy and particle tracking of ionising radiation, both for charged particles and photons. This project is set up with the collaboration of the new PET center at Haukeland University Hospital and we will closely collaborate with their researchers. Other research partners are the University of Oslo as well as the CLIC, ALICE and the ATLAS collaboration at CERN and the ILC project. == General PET technology == Positron Emission Tomography (PET) is recognized as a great medical imaging devices thanks to its non invasive technology. PET is a type of nuclear medicine procedure that measures metabolic activity of the cells of body tissues. PET is actually a combination of nuclear medicine and biochemical analysis. Used mostly in patients with brain or heart conditions and cancer, its big advantage is to identify the onset of a disease process before anatomical changes (that can be seen with other imaging processes such as computed tomography (CT) or MRI) related to the disease. === Radiotracers === [[Image:MAPD_radiotracer.JPG‎|frame|right|200px|Fluorodeoxyglucose-FDG]] [[Image:MAPD_positronelectronannihilation.JPG‎‎|frame|left|200px|Positron - Electron Annihilation]] The PET technology is based on radioactive emission. Radioactive substances are combined to molecules that the studied cells use particularly in their metabolism. These tracers are radioactive substances. The first step in PET imaging is the production of radionuclides by a cyclotron. These radionuclides will be attached to molecules used by the body before being injected to the patient by intravenous way. The molecule and the adionuclide form the radiotracer. The tracer is injected to the patient and, following the half life of the radionuclide, it will become stable by emitting a positron and a neutrino (the proton which stays in excess will become a neutron). Then, the emitted positron travels a short distance before encountering an electron. When they meet each other, the two particles combine and annihilate each other resulting in the emission of two 511 keV gamma rays in opposite directions. === Scintillators === [[Image:MAPD_crystaltransition.JPG‎ |frame|left|200px|Electronic transition in a crystal]] A scintillator is a substance that absorbs high energy and then, in response, emits photons. Scintillators are defined by their light output (number of emitted photons per unit absorbed energy), short fluorescence decay times, and optical transparency at wavelengths of their own specific emission energy. The high Z-value of the constituents and high density of inorganic crystals favour their choice for gamma-rays spectroscopy (rather than organic crystal) because heavy nucleuses accept better gammas than light nucleus. The scintillation mechanism in inorganic materials depends on energy states determined by the crystal lattice of the material. Absorption of energy can result in the elevation of an electron from its normal position in the valence band across the gap in the conduction ban, leaving a hole in the valence band. A charged particle passing through the detection medium will form a large number of electron-hole pairs, created by the elevation of electrons from the valence to the conduction band. The positive hole will quickly drift to the location of an impurity and ionize it, because the ionization energy of this impurity will be less than that of a typical lattice site. Meanwhile, the electron is free to migrate through the crystal and will do so until it encounters an ionized activator. At this point, the electron can drop into the impurity site, creating a neutral impurity configuration which can have its own set of excited energy states. If the activator state that is formed is an excited configuration with an allowed transition to the ground state, its deexcitation will occur very quickly and with high probability for the emission of the corresponding photon. The migration time for the electronics is shorter than the drop-out time: therefore, the decay time of these states determines the time characteristics of the emitted scintillation light. In order to fully utilize the scintillation light, the spectrum should fall near the wavelength region of maximum sensitivity for the device used to detect the light. {| border="1" cellpadding="2" cellspacing="0" ! !NaI(Ti) !BGO !LSO !LYSO |- |'''ZE''' |50 |74,2 |65 |65 |- |'''Density''' |3,67 |7,13 |7,35 |7,1 |- |'''Attenuation coeff (cm-1)''' |0,34 |0,95 |0,8 |0,83 |- |'''Decay time (ns)''' |230 |300 |40 |42 |} We see, through this chart, that the discovery of the LSO and LYSO crystals have helped to make some progresses. LSO and LYSO crystal are the best compromise for a high attenuation coefficient and a short decay time, two useful properties to improve time resolution in PET scanner. === Coincidence detection === [[Image:MAPD_coincidenceprinciple.JPG‎ |frame|none|200px|Coincidence detection principle]] In a PET camera, each detector generates a time pulse when it registers an incident photon. These pulses are then combined in coincidence circuitry, and if the pulses fall within a short time-window, they are deemed to be coincident. A diagram of this process is shown below: A coincidence event is assigned to a line of response (LOR) joining the two relevant detectors. Coincidence events in PET fall into 3 categories: true, scattered and random. [[Image:MAPD_coincidencecategories.JPG|frame||200px|3 different coincidence detection events]] * '''True coincidences''' occur when both photons from an annihilation event are detected by detectors in coincidence, neither photon undergoes any form of interaction prior to detection, and no other event is detected within the coincidence time-window. * A '''scattered coincidence''' is one in which one of the detected photons (sometimes both) has undergone at least one Compton scattering event prior to detection. Since the direction of the photon is changed during the Compton scattering process, it is highly likely that the resulting coincidence event will be assigned to the wrong LOR. Scattered coincidences add a background to the true coincidence distribution which changes slowly with position, decreasing contrast and causing the isotope concentrations to be overestimated. They also add statistical noise to the signal. The number of scattered events detected depends on the volume and attenuation characteristics of the object being imaged. * '''Random coincidences''' occur when two photons, not arising from the same annihilation event, are incident on the detectors within the coincidence time window of the system. As with scattered events, the number of random coincidences detected also depends on the volume and attenuation characteristics of the object being imaged, and on the geometry of the camera. The distribution of random coincidences is fairly uniform across the field of view and will cause isotope concentrations to be overestimated if not corrected for. Random coincidences also add statistical noise to the data. === Time of Flight === Time-of-flight PET takes advantage of the difference in arrival times of two photons from the same annihilation event to infer spatial information of this event. A detected coincidence between two crystals will have a time difference for any annihilation event that does not occur at the midpoint between the detectors, this time difference is used to place the position of the event. [[Image:MAPD tofprinciple.jpg‎ |frame|none|200px|Time of flight principle]] [[Image:MAPD tofprinciple2.JPG|frame|none|200px|Time of flight principle]] == Technology == === Avalanche Photodiodes === [[Image:MAPD structure.jpg‎|frame|right|200px|Structure of MAPD]] An APD is basically a p-n junction diode operated at large reverse bias voltage. The physical mechanism which avalanche gain depends, is the impact ionization. It occurs when the electric field in the depletion region is strong enough: an electron colliding with a bound valence electron transfers enough energy to this electron to ionize it. The additional carriers can gain sufficient energy from the electric field to cause further impact ionization, creating an avalanche of carriers. * '''proportional mode''' In a proportional counter, each original electron leads to an avalanche which is basically independent of all other avalanches formed from the other electrons associated with the original ionizing event. The collected charge remains proportional to the number of original electrons. [[Image:MAPD proportionalmode.jpg‎ ‎|frame|right|200px|proportional mode]] * '''Geiger mode''' With a higher electric field, a situation is created, in which one avalanche trigger itself a second avalanche at a different position. [[Image:MAPD geigermode.jpg‎‎|frame|right|200px|Geiger mode]] [[Image:MAPD_passivequenching.jpg‎‎|frame|right|200px|passive quenching]] The difference between both modes relies on the holes: in Geiger mode, they trigger avalanches, whereas in proportional mode they have not enough energy to do so. From the critical value of the electric field (corresponding to the breakdown voltage), a self propagating chain reaction occurs. In principle, an exponentially growing number of avalanches could be created. * '''b- Passive quenching''' The avalanche photodiode (i. e. pixel for the silicon photomultiplier) is connected to the power supply through a large series resistor Rs. If the current through the diode tends to zero, the voltage across the diode equals Vbias, which will be larger than the breakdown voltage. So, when the diode breaks down, the series resistor reduces the voltage across the APD, what quenches the avalanche. After the breakdown is quenched, the diode is recharged through the resistor. The APD is now ready to receive another photon. === different MAPDs === The MAPDs are 3 mm *3 mm, composed of 104 pixels /mm2 (9.104 pixels in total). They should be operated in inverse direction: anode should be grounded, while positive voltage in range 132-136V (it depends on the MAPDs and it is reported by the manufacturer). Exceeding the voltage 137V leads to unstable operation and even to the destruction of MAPD. The resistance of each pixel allows the passive quenching. Pixels are electrically decoupled from each other by polysilicon resistors and are connected by common Al strips, in order to readout the MAPD signal. Each MAPD pixel operates as a binary device but MAPD in whole is an analogue detector. The output signal allows us to determine the number of fired pixels: in fact, the output signal is proportional to the number of fired pixels. The MAPD is intrinsically very fast due to the very small width of the depletion region and the extremely short Geiger type discharge. We must keep in mind that the name of the device depends on the manufacturer. MPPC (for Multi-Pixel Photon Counter) and SiPM (Silicon PhotoMultiplier) are two other usual names. === Properties of the devices === * '''Time resolution''': even if photons simultaneously enter different pixels at the same time, the output pulse from each pixel will not necessarily be the same time so that a fluctuation or time jitter occurs. When two photons enter APD pixels at a certain time difference which is shorter than this jitter, then that time difference is impossible to detect. Time resolution is the minimum time difference that can be detected by APD pixels and is defined as FWHM of the distribution of the time jitter. * '''Photon Detection Efficiency (PDE)''': this is a measure of what percent of the incident photons were detected. * '''Dark count''': output pulses are produced not only by photon-generated carriers but also by thermally-generated dark current carriers. The dark current pulses are measured as dark count which then causes detection errors. Although increasing the reverse voltage improves photon detection efficiency, it also increases the dark count. The dark count can be reduced by lowering the temperature. * '''Absolute gain''': the absolute gain is the number of charges which have been created at the output of the MAPD when one photon has hit this device. * '''Quantum efficiency (QE)''': quantum efficiency is a value showing the number of electrons or holes created as photocurrent divided by the number of incident photons, and is usually expressed as a percent. * '''Afterpulse''': afterpulses are spurious pulses following the true signal, which occur when the generated carriers are trapped by crystals defects and then release at a certain delay time. A fterpulses cause detection errors. The lower the temperature, the higher the probability that carriers may be trapped by crystal defects, so afterpulses will increase. * '''Crosstalk''': in an avalanche multiplication process, photons might be generated which are different from photons initially incident on an APD pixel. If those generated photons are detected by other APD pixels, then the MAPD output shows a value higher than the number of photons that were actually input and detected by the MAPD. This phenomenon is thought to be one of the causes of crosstalk in the MAPD. == Documentation == [[User:Dfe002|Dominik]] 09:06, 12 June 2009 (UTC) [[Category:Detector lab]] a096d9da6cf9d7c392082394b791187e8c1c5c9a File:Mppc hamamatsu details.pdf 6 192 581 2009-06-12T09:15:03Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MPPC PET.pdf 6 193 582 2009-06-12T09:21:32Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Detector Control System (DCS) for ALICE Front-end electronics 0 5 612 13 2009-07-07T11:07:09Z Dfe002 7 wikitext text/x-wiki == Purpose == This page acts as a knowledge base for parts of the ALICE Detector Control System (DCS), namely the control of the Front-end electronics of several sub-detectors of ALICE. Since we are mainly involved in the TPC Front-end Electronics, this site may be a bit biased. But it may evolve to a more comprehensive data base for other detectors as well. __TOC__ == Overview == The Detector Control System (DCS) is one of the major modules of the ALICE detector. In general, it covers the tasks of controlling the cooling system, the ventilation system, the magnetic fields and other supports as well as the configuration and monitoring of the Front-end electronics. This page will only cover topics related to the latter. More information on the DCS in general can be found at the [http://alicedcs.web.cern.ch/AliceDCS DCS website]. So far, the following sub-detectors use a number of common components which have been developed in a joint effort: * [http://aliceinfo.cern.ch/Collaboration/ALICE_Project/TPC/index.html Time Projection Chamber (TPC)] * [http://www-alice.gsi.de/trd/index.html Transition Radiation Detector (TRD)] * Photon Spectrometer (PHOS) * Forward Multiplicity Detector (FMD) * EMCAL (new) They all use the DCS board as controlling node on the hardware level. Thus, the communication software can be (almost) identically. The DCS board is a custom-made board with an Altera FPGA that includes an ARM core, which provides the opportunity to run a light-weight Linux system on the card. The board interfaces to the front-end electronics via a dedicated hardware interface and connects to the higher DCS-layers via the DIM communication framework over Ethernet. Furthermore, all detectors but the TRD use a similar hardware setup in the front-end electronics: the Front-End Cards are based on the ALTRO chip and served by Readout Control Units (RCUs). Below is a figure exemplarily for the TPC. [[Image:TPC-FEE blockdia.png|frame|none|Blockdiagram of the TPC Front-end electronics]] === Software Architecture === The DCS consist of three main functional layers. From top to bottom this is: * The Supervisory Layer. The Supervisory Layer provides a user interfaces to the operator. It also communicates with external systems for the LHC * The Control Layer. The Supervisory Layer communicates with the Control Layer mainly through a LAN network. This layer consists of PCs, PLCs (Programmable Logic Cells) and PLC like devices. The Control Layer collects and processes information from the Field Level, as well as sending commands and information from the Supervisory Layer to the Field Layer. It also connects to the Configuration Database. * The Field Layer. The Field Layer consists of all field-devices, sensors, actuators and so on. The DCS board and the readout electronics is located in this layer. For the ALICE experiment, PVSS II has been chosen as SCADA (Supervisory Control And Data Acquisition) system (i.e. the Supervisory Layer). The PVSS connects to the InterComLayer, a specific communication software acting as the Control Layer and connecting the hardware devices in the Field Layer to the controlling system in the Supervisory Layer. The system uses the communication framework [http://www.cern.ch/dim DIM (Distributed Information Management)]. To interfaces are defined for the DCS which abstract the underlaying hardware: * PVSS and InterComLayer communicate through a specific interface, the Front-End-Device (FED), which is common among different sub-detectors within the ALICE experiment. The InterComLayer implements a server which the PVSS can subscribe to as a client. * Each hardware device implements a Front-End-Electronics-Server (FeeServer), which the InterComLayer subscribes to as a client. The InterComLayer connects to several FeeServers and pools data before distributing it to the SCADA system. Vice versa the InterComLayer distributes configuration data to the FeeServers. In addition it implements an interface to the Configuration Database containing all specific configuration data for the hardware devices. [[Image:FeeComChain.PNG|frame|none|Schematic overview of the DCS communication software]] === Hardware Components === * DCS board * Readout-Control-Unit * Frontend Cards * TRD Readout board == The communication software == [[Image:FEE-chain.png|frame|none|DCS data flow for the TPC Front-End-Electronics.]] === Communication Protocol === Communication between all layers is based on the DIM protocol. DIM is an open source communication framework developed at CERN. It provides a network-transparent inter-process communication for distributed and heterogeneous environments. TCP/IP over Ethernet is used as transport layer. A common library for many different operating systems is provided by the framework. DIM implements a client-server relation with two major functionalities. * Services: The DIM server publishes so called services and provides data through a service. Any DIM client can subscribe to services and monitor their data. The DIM clients get notified about current values via a callback from the DIM server. * Commands: A DIM server can accept commands from DIM clients. Server and client have to agree on the format of the command. Here applies the same for the possible data types like for the services. A dedicated DIM name-server takes control over all the running clients, servers and their services available in the system. Each server registers at startup all its services and command channels. For a client the location of a server is transparent. It asks the DIM name-server which server provides a specific service and retrieves the access information. The process then connects directly to the corresponding server. The DIM name-server concept eases a recovery process of the system after update and restart of servers or clients at any time. It enables also fast migration from one machine to another and distributed tasks. Whenever one of the processes (a server or even the name server) in the system crashes or dies all processes connected to it will be notified and will reconnect as soon as it comes back to life. === PVSS === === InterComLayer === The InterComLayer takes the task of the Control Layer. It runs independently from the other system layers on a separate machine outside of the radiation area. It provides three interfaces: * Front-End-Electronics Client (DIM client) to connect to the Field Layer * Front-End-Device Server (DIM server) to connect to the Supervisory Layer * Interface to the Configuration Database, using a database client [[Image:FeeCom-Software.png|frame|none|The InterCom layer in the data flow of the FeeCommunication software.]] The FEE interface consists of a command channel, a corresponding acknowledge channel, a message channel and several service channels. These services are referred to be values of interest like temperature, voltage, currents, etc. of the Front-end electronics. In order to reduce network traffic the FeeServer can apply thresholds for data value changes, so called dead-bands. Changes are only published if a certain dead-band is exceeded, the dead-band can be defined for each service independently in conformity with the different nature of the data. The InterComLayer connects to FeeServers according to the configuration. After the connection is established, the InterComLayer subscribes to the services of the FeeServers and controls their message channels. Filtering of messages according to the log-level is performed on each layer to reduce network traffic. The service channels of the FeeServers are pooled together and re-published to the supervisory level. By this means the source of the services is transparent to the SCADA system on top. The InterComLayer is an abstraction layer, which disconnects Supervisory and Field Layer. In order to transport configuration data to the Front-end electronics, the InterComLayer has an interface to the configuration database. Neither database nor InterComLayer know about the format of the data. The data will be handled as BLOBs (Binary Large OBjects). The database contains entries of configuration packages. For each specific configuration of the Front-end electronics it creates a descriptor which refers to the required configuration packages. The Supervisory Layer sends a request to load a certain configuration to the InterComLayer, which then fetches the corresponding ''BLOB'' from the configuration database and transports it through the command channel to the FeeServers. In addition, the InterComLayer provides functionality for maintenance and control of the FeeServers. Servers can be updated, restarted and their controlling properties can be adjusted to any requirements. For further details go to the [[InterCom Layer]] page. ==== Compiliation and Installation ==== It exists a dedicated description for compiling and installing the [[InterComLayer installation]]. === The Front-End-Electronics-Server === The DCS for the Front-end elctronics is based on so called Front-End-Electronics-Servers (FeeServers), which are running on the DCS board close to the hardware. A FeeServer abstracts the underlying Front-end electronics to a certain degree and covers the following tasks: * Interfacing hardware data sources and publishing data * Receiving of commands and configuration data for controlling the Front-end electronics * Self-tests and Watchdogs (consistency check and setting of parameters) In order to keep development simple and the software re-usable for different hardware setups the FeeServer has been splitted into a device independent core and an interface to the hardware dependent functionality. It exists a dedicated description for compiling and installing the [[FeeServer]], as well as some hints and guidelines for developing an own [[FeeServer#ControlEngine guidelines|ControlEngine]] (CE) for the FeeServer. ==== The FeeServer core ==== The core of the FeeServer is device-independent. It provides general communication functionality, remote control and update of the whole FeeServer application. Some features are related to the configuration of the data publishing. In order to reduce network traffic, variable deadbands have been introduced. Data is only updated if the variation exceeds the deadband. The core can be used for different devices, i.e. different detectors of the ALICE experiment. The device-dependent actions are adapted for each specific device and are executed in separated threads. This makes a controlled execution possible. If execution is stuck, the server core is still running independently. It can kill and clean up the stuck thread and notify the upper layers. ==== The ControlEngine (CE) ==== The ControlEngine implements the device dependent functionality of the FeeServer. The CE provides data access in order to monitor data points and executes received commands specific for the underlying hardware. An abstract interface between FeeServer and CE is defined, the ControlEngine implements interface methods for initializing, cleaning up and command execution. It has contact to the specific bus systems of the hardware devices. The access is ancapsulated in Linux device drivers. This makes the functionality of the CE independent from the hardware/firmware version. One example is the CE for the TPC detector and the RCU. Please check the dedicated site [[RCU ControlEngine]]. === DCS board tools === This sections covers the DCS board software for the TPC-like detectors (so far TPC, PHOS, most likely FMD and EMCAL). Apart from the mentioned FeeServer there are some low level tools and interfaces. In fact, the FeeServer uses them. ...[[DCS board tools| read more]]. == Specifications == === Front-End-Device interface === The FED API is common among all detectors in ALICE. It defines the interface between the FedServer(s) and the PVSS system of one detector. A more detailed description you will find in the document itself. This is the version currently (03.02.2006) also available at the DCS pages: [http://www.ift.uib.no/~kjeks/download/documents/FedServerAPI-v2.0.pdf FED API v2.0 (draft)] === Front-End-Electronics interface === === Control Engine interface === === [[DCS_board_tools#Message_Buffer_access_.28RCU_interface.29 | Message Buffer Interface]] === === [[RCU ControlEngine]] === === Format of TPC configuration data === == [[DCS FAQ]] == == [[DCS Download]] == == [[DCS Tutorial|How to set up a FeeCom chain]]== == [[Setup of low-level DCS for TPC Front-end electronics]]== == [[Setting up a local DCS network]]== == [[Documentation of different FeeServer Control Engines]] == == Links == * [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc The ALICE TPC Front End Electronics] * [http://alicedcs.web.cern.ch/AliceDCS/ ALICE Detector Control System group] * [http://www.kip.uni-heidelberg.de/ti/DCS-Board/current/ The DCS board pages] * [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html ARM linux on the DCS board] * [http://www.ztt.fh-worms.de/en/projects/Alice-FEEControl/index.shtml FeeCom Software] * [http://www.cern.ch/dim Distributed Information Management System (DIM)] ---- ---- [[Category:DCS]] 2083d9fd87b6d59e85d81ff251bd4d0b4b367ac2 Documentation of different FeeServer Control Engines 0 194 613 2009-07-07T11:21:53Z Dfe002 7 Created page with '==Busybox FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== ==Laser Sync FeeServer== ===Services=== *MODEFREQVAL *FLASHEKSPLASTAR...' wikitext text/x-wiki ==Busybox FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== ==Laser Sync FeeServer== ===Services=== *MODEFREQVAL *FLASHEKSPLASTARTTIME *FLASHEKSPLAENDTIME *FLASHSPECTRONSTARTTIME *FLASHSPECTRONENDTIME *SPECTRONDELAY *L0REQUESTTIME *L0RETURNWINDOWSTART *L0RETURNWINDOWSTOP *QSWITCHEKSPLASTART *QSWITCHEKSPLASTOP *RUNMODE *SAMPLECLOCKDIVIDER *TRIGGERCONFIGURATION1 *TRIGGERCONFIGURATION2 *RCUVERSION *CTPSIGNATURE *SHUTTERCOUNTER *EKSPLAFLASHCOUNTER *SPECTRONFLASHCOUNTER *EKSPLAQSWITCHCOUNTER *SPECTRONQSWITCHCOUNTER *L0REQUESTCOUNTER *L0RECEIVEDCOUNTER *L0RECEIVEDINWINDOWCOUNTER *L0TIMEOUTCOUNTER *L0RETURNTIMER *ACTUALLASERRATE *CYCLETIMER *TTC_CONTROL *TTC_ROICONFIG1 *TTC_ROICONFIG2 *TTC_L1LATENCY *TTC_L2LATENCY *TTC_ROILATENCY *TTC_L1MSGLATENCY *TTC_PREPULSECNT *TTC_BCIDLOCAL *TTC_L0COUNTER *TTC_L1MSGCOUNTER *TTC_L2ACOUNTER *TTC_L2RCOUNTER *TTC_ROICOUNTER *TTC_HAMMINGERRCNT *TTC_ERRORCNT *TTC_BUFFEREDEVENTS *TTC_DAQHEADER1 *TTC_DAQHEADER2 *TTC_DAQHEADER3 *TTC_DAQHEADER4 *TTC_DAQHEADER5 *TTC_DAQHEADER6 *TTC_DAQHEADER7 *TTC_EVENTINFO ===Commands=== ====Hex Commands==== *LASER_WRITE_MODEFREQVAL (0xFD010000) *LASER_WRITE_FLASHEKSPLASTARTTIME (0xFD020000) *LASER_WRITE_FLASHEKSPLAENDTIME (0xFD030000) *LASER_WRITE_FLASHSPECTRONSTARTTIME (0xFD040000) *LASER_WRITE_FLASHSPECTRONENDTIME (0xFD050000) *LASER_WRITE_SPECTRONDELAY (0xFD060000) *LASER_WRITE_L0REQUESTTIME (0xFD070000) *LASER_WRITE_L0RETURNWINDOWSTART (0xFD080000) *LASER_WRITE_L0RETURNWINDOWSTOP (0xFD090000) *LASER_WRITE_QSWITCHEKSPLASTART (0xFD0A0000) *LASER_WRITE_QSWITCHEKSPLASTOP (0xFD0B0000) *LASER_WRITE_RUNMODE (0xFD0C0000) *LASER_WRITE_SAMPLECLOCKDIVIDER (0xFD0D0000) *LASER_WRITE_TRIGGERCONFIGURATION1 (0xFD0E0000) *LASER_WRITE_TRIGGERCONFIGURATION2 (0xFD0F0000) *LASER_WRITE_TTC_CONTROL (0xFD110000) *LASER_TOGGLE_TTC_RESET (0xFD120000) *LASER_WRITE_TTC_ROICONFIG1 (0xFD130000) *LASER_WRITE_TTC_ROICONFIG2 (0xFD140000) *LASER_TOGGLE_TTC_RESETCOUNTER (0xFD150000) *LASER_TOGGLE_TTC_ISSUETESTMODE (0xFD160000) *LASER_WRITE_TTC_L1LATENCY (0xFD170000) *LASER_WRITE_TTC_L2LATENCY (0xFD180000) *LASER_WRITE_TTC_ROILATENCY (0xFD190000) *LASER_WRITE_TTC_L1MSGLATENCY (0xFD1A0000) * LASER_SET_FLASHEKSPLASTARTTIME (0xFD1B0000 ) * LASER_SET_FLASHEKSPLAENDTIME (0xFD1C0000 ) * LASER_SET_SPECTRONSTARTTIME (0xFD1D0000 ) * LASER_SET_SPECTRONENDTIME (0xFD1E0000 ) * LASER_SET_SPECTRONDELAY (0xFD1F0000 ) * LASER_SET_L0REQUESTTIME (0xFD200000 ) * LASER_SET_L0RETURNWINDOWSTART (0xFD210000 ) * LASER_SET_L0RETURNWINDOWEND (0xFD220000 ) * LASER_SET_QSWITCHEKSPLASTART (0xFD230000 ) * LASER_SET_QSWITCHEKSPLAEND (0xFD240000 ) * LASER_CLEAR_COUNTERS (0xFD250000 ) ====Highlevel Commands==== *LASER_WRITE_MODEFREQVAL *LASER_WRITE_FLASHEKSPLASTARTTIME *LASER_WRITE_FLASHEKSPLAENDTIME LASER_WRITE_FLASHSPECTRONSTARTTIME *LASER_WRITE_FLASHSPECTRONENDTIME *LASER_WRITE_SPECTRONDELAY *LASER_WRITE_L0REQUESTTIME *LASER_WRITE_L0RETURNWINDOWSTART *LASER_WRITE_L0RETURNWINDOWSTOP *LASER_WRITE_QSWITCHEKSPLASTART *LASER_WRITE_QSWITCHEKSPLASTOP *LASER_WRITE_RUNMODE *LASER_WRITE_SAMPLECLOCKDIVIDER *LASER_WRITE_TRIGGERCONFIGURATION1 *LASER_WRITE_TRIGGERCONFIGURATION2 *LASER_WRITE_TTC_CONTROL *LASER_TOGGLE_TTC_RESET *LASER_WRITE_TTC_ROICONFIG1 *LASER_WRITE_TTC_ROICONFIG2 *LASER_TOGGLE_TTC_RESETCOUNTER *LASER_TOGGLE_TTC_ISSUETESTMODE *LASER_WRITE_TTC_L2LATENCY *LASER_WRITE_TTC_L1LATENCY *LASER_WRITE_TTC_ROILATENCY *LASER_WRITE_TTC_L1MSGLATENCY *LASER_SET_FLASHEKSPLASTARTTIME (Shuttertime, Flash Ekspla Time, Shift) *LASER_SET_FLASHEKSPLAENDTIME (Shuttertime, Flash Ekspla Time, Flash Ekspla duration, Shift) *LASER_SET_SPECTRONSTARTTIME (Shuttertime, Spectron Flash Time, Shift) *LASER_SET_SPECTRONENDTIME (Shuttertime, Spectron Flash Time, Spectron QSwitch Time, Shift) *LASER_SET_SPECTRONDELAY (Spectron QSwitch Veto Delay) *LASER_SET_L0REQUESTTIME (Shuttertime, L0Time, Shift) *LASER_SET_L0RETURNWINDOWSTART (Shuttertime, L0Time, L0 Window start, shift) *LASER_SET_L0RETURNWINDOWEND (Shuttertime, L0Time, L0 Window start, L0 Window end, shift) *LASER_SET_QSWITCHEKSPLASTART (Shuttertime, QSwitch Ekspla time, shift) *LASER_SET_QSWITCHEKSPLAEND (Shuttertime, QSwitch Ekspla time, QSwitch Ekspla duration, shift) *LASER_CLEAR_COUNTERS() ===States and Transitions=== ==Gating Pulser FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== ==RCU FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== 10184a701161d55d9758069da96af04cfe62d0cd 614 613 2009-07-07T11:24:11Z Dfe002 7 wikitext text/x-wiki ==Busybox FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== ==Laser Sync FeeServer== ===Services=== *MODEFREQVAL *FLASHEKSPLASTARTTIME *FLASHEKSPLAENDTIME *FLASHSPECTRONSTARTTIME *FLASHSPECTRONENDTIME *SPECTRONDELAY *L0REQUESTTIME *L0RETURNWINDOWSTART *L0RETURNWINDOWSTOP *QSWITCHEKSPLASTART *QSWITCHEKSPLASTOP *RUNMODE *SAMPLECLOCKDIVIDER *TRIGGERCONFIGURATION1 *TRIGGERCONFIGURATION2 *RCUVERSION *CTPSIGNATURE *SHUTTERCOUNTER *EKSPLAFLASHCOUNTER *SPECTRONFLASHCOUNTER *EKSPLAQSWITCHCOUNTER *SPECTRONQSWITCHCOUNTER *L0REQUESTCOUNTER *L0RECEIVEDCOUNTER *L0RECEIVEDINWINDOWCOUNTER *L0TIMEOUTCOUNTER *L0RETURNTIMER *ACTUALLASERRATE *CYCLETIMER *TTC_CONTROL *TTC_ROICONFIG1 *TTC_ROICONFIG2 *TTC_L1LATENCY *TTC_L2LATENCY *TTC_ROILATENCY *TTC_L1MSGLATENCY *TTC_PREPULSECNT *TTC_BCIDLOCAL *TTC_L0COUNTER *TTC_L1MSGCOUNTER *TTC_L2ACOUNTER *TTC_L2RCOUNTER *TTC_ROICOUNTER *TTC_HAMMINGERRCNT *TTC_ERRORCNT *TTC_BUFFEREDEVENTS *TTC_DAQHEADER1 *TTC_DAQHEADER2 *TTC_DAQHEADER3 *TTC_DAQHEADER4 *TTC_DAQHEADER5 *TTC_DAQHEADER6 *TTC_DAQHEADER7 *TTC_EVENTINFO ===Commands=== ====Hex Commands==== *LASER_WRITE_MODEFREQVAL (0xFD010000) *LASER_WRITE_FLASHEKSPLASTARTTIME (0xFD020000) *LASER_WRITE_FLASHEKSPLAENDTIME (0xFD030000) *LASER_WRITE_FLASHSPECTRONSTARTTIME (0xFD040000) *LASER_WRITE_FLASHSPECTRONENDTIME (0xFD050000) *LASER_WRITE_SPECTRONDELAY (0xFD060000) *LASER_WRITE_L0REQUESTTIME (0xFD070000) *LASER_WRITE_L0RETURNWINDOWSTART (0xFD080000) *LASER_WRITE_L0RETURNWINDOWSTOP (0xFD090000) *LASER_WRITE_QSWITCHEKSPLASTART (0xFD0A0000) *LASER_WRITE_QSWITCHEKSPLASTOP (0xFD0B0000) *LASER_WRITE_RUNMODE (0xFD0C0000) *LASER_WRITE_SAMPLECLOCKDIVIDER (0xFD0D0000) *LASER_WRITE_TRIGGERCONFIGURATION1 (0xFD0E0000) *LASER_WRITE_TRIGGERCONFIGURATION2 (0xFD0F0000) *LASER_WRITE_TTC_CONTROL (0xFD110000) *LASER_TOGGLE_TTC_RESET (0xFD120000) *LASER_WRITE_TTC_ROICONFIG1 (0xFD130000) *LASER_WRITE_TTC_ROICONFIG2 (0xFD140000) *LASER_TOGGLE_TTC_RESETCOUNTER (0xFD150000) *LASER_TOGGLE_TTC_ISSUETESTMODE (0xFD160000) *LASER_WRITE_TTC_L1LATENCY (0xFD170000) *LASER_WRITE_TTC_L2LATENCY (0xFD180000) *LASER_WRITE_TTC_ROILATENCY (0xFD190000) *LASER_WRITE_TTC_L1MSGLATENCY (0xFD1A0000) * LASER_SET_FLASHEKSPLASTARTTIME (0xFD1B0000 ) * LASER_SET_FLASHEKSPLAENDTIME (0xFD1C0000 ) * LASER_SET_SPECTRONSTARTTIME (0xFD1D0000 ) * LASER_SET_SPECTRONENDTIME (0xFD1E0000 ) * LASER_SET_SPECTRONDELAY (0xFD1F0000 ) * LASER_SET_L0REQUESTTIME (0xFD200000 ) * LASER_SET_L0RETURNWINDOWSTART (0xFD210000 ) * LASER_SET_L0RETURNWINDOWEND (0xFD220000 ) * LASER_SET_QSWITCHEKSPLASTART (0xFD230000 ) * LASER_SET_QSWITCHEKSPLAEND (0xFD240000 ) * LASER_CLEAR_COUNTERS (0xFD250000 ) ====Highlevel Commands==== *LASER_WRITE_MODEFREQVAL *LASER_WRITE_FLASHEKSPLASTARTTIME *LASER_WRITE_FLASHEKSPLAENDTIME LASER_WRITE_FLASHSPECTRONSTARTTIME *LASER_WRITE_FLASHSPECTRONENDTIME *LASER_WRITE_SPECTRONDELAY *LASER_WRITE_L0REQUESTTIME *LASER_WRITE_L0RETURNWINDOWSTART *LASER_WRITE_L0RETURNWINDOWSTOP *LASER_WRITE_QSWITCHEKSPLASTART *LASER_WRITE_QSWITCHEKSPLASTOP *LASER_WRITE_RUNMODE *LASER_WRITE_SAMPLECLOCKDIVIDER *LASER_WRITE_TRIGGERCONFIGURATION1 *LASER_WRITE_TRIGGERCONFIGURATION2 *LASER_WRITE_TTC_CONTROL *LASER_TOGGLE_TTC_RESET *LASER_WRITE_TTC_ROICONFIG1 *LASER_WRITE_TTC_ROICONFIG2 *LASER_TOGGLE_TTC_RESETCOUNTER *LASER_TOGGLE_TTC_ISSUETESTMODE *LASER_WRITE_TTC_L2LATENCY *LASER_WRITE_TTC_L1LATENCY *LASER_WRITE_TTC_ROILATENCY *LASER_WRITE_TTC_L1MSGLATENCY *LASER_SET_FLASHEKSPLASTARTTIME (Shuttertime, Flash Ekspla Time, Shift) *LASER_SET_FLASHEKSPLAENDTIME (Shuttertime, Flash Ekspla Time, Flash Ekspla duration, Shift) *LASER_SET_SPECTRONSTARTTIME (Shuttertime, Spectron Flash Time, Shift) *LASER_SET_SPECTRONENDTIME (Shuttertime, Spectron Flash Time, Spectron QSwitch Time, Shift) *LASER_SET_SPECTRONDELAY (Spectron QSwitch Veto Delay) *LASER_SET_L0REQUESTTIME (Shuttertime, L0Time, Shift) *LASER_SET_L0RETURNWINDOWSTART (Shuttertime, L0Time, L0 Window start, shift) *LASER_SET_L0RETURNWINDOWEND (Shuttertime, L0Time, L0 Window start, L0 Window end, shift) *LASER_SET_QSWITCHEKSPLASTART (Shuttertime, QSwitch Ekspla time, shift) *LASER_SET_QSWITCHEKSPLAEND (Shuttertime, QSwitch Ekspla time, QSwitch Ekspla duration, shift) *LASER_CLEAR_COUNTERS() ===States and Transitions=== Transitions: * LOAD_RECIPE * GO_STANDBY * GO_WARM_UP * GO_ON_FREE_RUN * GO_ON_TRIGGER * GO_STBY_CONFIGURED * GO_STBY_CONFIGURED States: *STANDBY *STBY_CONFIGURED *WARM_UP *ON_TRIGGER *ON_FREE_RUN ==Gating Pulser FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== ==RCU FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== 5ec353818427d54f677e8bb463a3a654ea175eb9 615 614 2009-07-07T11:35:45Z Dfe002 7 wikitext text/x-wiki ==Busybox FeeServer== ===Services=== TXR RXMP EIDFIFOC CEID0 CEID1 CEID2 MREID0 MREID1 MREID2 L0TTO FEEBA FSMH RRTO CRID RC BT0 BT1 RXMF TMC0 TMC1 L0L BCIDO L1C L2AC L2RC ===Commands=== ====Hex Commands==== #define FEESVR_CMD_BB (0x0c000000 | FEESERVER_CMD) #define BB_INIT (0x010000 | FEESVR_CMD_BB) #define INIT_BUSY_BOX (0x010000 | FEESVR_CMD_BB) //Depricated #define BB_WRITE_STATUS (0x020000 | FEESVR_CMD_BB) #define BB_WRITE_RXMF (0x030000 | FEESVR_CMD_BB) #define BB_WRITE_RRTO (0x040000 | FEESVR_CMD_BB) #define BB_WRITE_FM (0x050000 | FEESVR_CMD_BB) #define BB_WRITE_FSMH (0x060000 | FEESVR_CMD_BB) #define BB_WRITE_FEEBA (0x070000 | FEESVR_CMD_BB) #define BB_WRITE_L0TTO (0x080000 | FEESVR_CMD_BB) #define BB_WRITE_L0_TIMEOUT (0x080000 | FEESVR_CMD_BB) //Depricated #define BB_WRITE_TX (0x090000 | FEESVR_CMD_BB) #define BB_WRITE_TMC0 (0x0a0000 | FEESVR_CMD_BB) #define BB_WRITE_TMC1 (0x0b0000 | FEESVR_CMD_BB) #define BB_WRITE_TMR (0x0c0000 | FEESVR_CMD_BB) #define BB_WRITE_L0L (0x0d0000 | FEESVR_CMD_BB) #define BB_WRITE_BCIDO (0x0e0000 | FEESVR_CMD_BB) #define BB_FIRMWARE_RESET (0x0f0000 | FEESVR_CMD_BB) ====Highlevel Commands==== BB_WRITE_TX BB_WRITE_L0TTO BB_WRITE_FEEBA BB_WRITE_FSMH BB_WRITE_FM BB_WRITE_RRTO BB_WRITE_RXMF ===States and Transitions=== ==Laser Sync FeeServer== ===Services=== *MODEFREQVAL *FLASHEKSPLASTARTTIME *FLASHEKSPLAENDTIME *FLASHSPECTRONSTARTTIME *FLASHSPECTRONENDTIME *SPECTRONDELAY *L0REQUESTTIME *L0RETURNWINDOWSTART *L0RETURNWINDOWSTOP *QSWITCHEKSPLASTART *QSWITCHEKSPLASTOP *RUNMODE *SAMPLECLOCKDIVIDER *TRIGGERCONFIGURATION1 *TRIGGERCONFIGURATION2 *RCUVERSION *CTPSIGNATURE *SHUTTERCOUNTER *EKSPLAFLASHCOUNTER *SPECTRONFLASHCOUNTER *EKSPLAQSWITCHCOUNTER *SPECTRONQSWITCHCOUNTER *L0REQUESTCOUNTER *L0RECEIVEDCOUNTER *L0RECEIVEDINWINDOWCOUNTER *L0TIMEOUTCOUNTER *L0RETURNTIMER *ACTUALLASERRATE *CYCLETIMER *TTC_CONTROL *TTC_ROICONFIG1 *TTC_ROICONFIG2 *TTC_L1LATENCY *TTC_L2LATENCY *TTC_ROILATENCY *TTC_L1MSGLATENCY *TTC_PREPULSECNT *TTC_BCIDLOCAL *TTC_L0COUNTER *TTC_L1MSGCOUNTER *TTC_L2ACOUNTER *TTC_L2RCOUNTER *TTC_ROICOUNTER *TTC_HAMMINGERRCNT *TTC_ERRORCNT *TTC_BUFFEREDEVENTS *TTC_DAQHEADER1 *TTC_DAQHEADER2 *TTC_DAQHEADER3 *TTC_DAQHEADER4 *TTC_DAQHEADER5 *TTC_DAQHEADER6 *TTC_DAQHEADER7 *TTC_EVENTINFO ===Commands=== ====Hex Commands==== *LASER_WRITE_MODEFREQVAL (0xFD010000) *LASER_WRITE_FLASHEKSPLASTARTTIME (0xFD020000) *LASER_WRITE_FLASHEKSPLAENDTIME (0xFD030000) *LASER_WRITE_FLASHSPECTRONSTARTTIME (0xFD040000) *LASER_WRITE_FLASHSPECTRONENDTIME (0xFD050000) *LASER_WRITE_SPECTRONDELAY (0xFD060000) *LASER_WRITE_L0REQUESTTIME (0xFD070000) *LASER_WRITE_L0RETURNWINDOWSTART (0xFD080000) *LASER_WRITE_L0RETURNWINDOWSTOP (0xFD090000) *LASER_WRITE_QSWITCHEKSPLASTART (0xFD0A0000) *LASER_WRITE_QSWITCHEKSPLASTOP (0xFD0B0000) *LASER_WRITE_RUNMODE (0xFD0C0000) *LASER_WRITE_SAMPLECLOCKDIVIDER (0xFD0D0000) *LASER_WRITE_TRIGGERCONFIGURATION1 (0xFD0E0000) *LASER_WRITE_TRIGGERCONFIGURATION2 (0xFD0F0000) *LASER_WRITE_TTC_CONTROL (0xFD110000) *LASER_TOGGLE_TTC_RESET (0xFD120000) *LASER_WRITE_TTC_ROICONFIG1 (0xFD130000) *LASER_WRITE_TTC_ROICONFIG2 (0xFD140000) *LASER_TOGGLE_TTC_RESETCOUNTER (0xFD150000) *LASER_TOGGLE_TTC_ISSUETESTMODE (0xFD160000) *LASER_WRITE_TTC_L1LATENCY (0xFD170000) *LASER_WRITE_TTC_L2LATENCY (0xFD180000) *LASER_WRITE_TTC_ROILATENCY (0xFD190000) *LASER_WRITE_TTC_L1MSGLATENCY (0xFD1A0000) * LASER_SET_FLASHEKSPLASTARTTIME (0xFD1B0000 ) * LASER_SET_FLASHEKSPLAENDTIME (0xFD1C0000 ) * LASER_SET_SPECTRONSTARTTIME (0xFD1D0000 ) * LASER_SET_SPECTRONENDTIME (0xFD1E0000 ) * LASER_SET_SPECTRONDELAY (0xFD1F0000 ) * LASER_SET_L0REQUESTTIME (0xFD200000 ) * LASER_SET_L0RETURNWINDOWSTART (0xFD210000 ) * LASER_SET_L0RETURNWINDOWEND (0xFD220000 ) * LASER_SET_QSWITCHEKSPLASTART (0xFD230000 ) * LASER_SET_QSWITCHEKSPLAEND (0xFD240000 ) * LASER_CLEAR_COUNTERS (0xFD250000 ) ====Highlevel Commands==== *LASER_WRITE_MODEFREQVAL *LASER_WRITE_FLASHEKSPLASTARTTIME *LASER_WRITE_FLASHEKSPLAENDTIME LASER_WRITE_FLASHSPECTRONSTARTTIME *LASER_WRITE_FLASHSPECTRONENDTIME *LASER_WRITE_SPECTRONDELAY *LASER_WRITE_L0REQUESTTIME *LASER_WRITE_L0RETURNWINDOWSTART *LASER_WRITE_L0RETURNWINDOWSTOP *LASER_WRITE_QSWITCHEKSPLASTART *LASER_WRITE_QSWITCHEKSPLASTOP *LASER_WRITE_RUNMODE *LASER_WRITE_SAMPLECLOCKDIVIDER *LASER_WRITE_TRIGGERCONFIGURATION1 *LASER_WRITE_TRIGGERCONFIGURATION2 *LASER_WRITE_TTC_CONTROL *LASER_TOGGLE_TTC_RESET *LASER_WRITE_TTC_ROICONFIG1 *LASER_WRITE_TTC_ROICONFIG2 *LASER_TOGGLE_TTC_RESETCOUNTER *LASER_TOGGLE_TTC_ISSUETESTMODE *LASER_WRITE_TTC_L2LATENCY *LASER_WRITE_TTC_L1LATENCY *LASER_WRITE_TTC_ROILATENCY *LASER_WRITE_TTC_L1MSGLATENCY *LASER_SET_FLASHEKSPLASTARTTIME (Shuttertime, Flash Ekspla Time, Shift) *LASER_SET_FLASHEKSPLAENDTIME (Shuttertime, Flash Ekspla Time, Flash Ekspla duration, Shift) *LASER_SET_SPECTRONSTARTTIME (Shuttertime, Spectron Flash Time, Shift) *LASER_SET_SPECTRONENDTIME (Shuttertime, Spectron Flash Time, Spectron QSwitch Time, Shift) *LASER_SET_SPECTRONDELAY (Spectron QSwitch Veto Delay) *LASER_SET_L0REQUESTTIME (Shuttertime, L0Time, Shift) *LASER_SET_L0RETURNWINDOWSTART (Shuttertime, L0Time, L0 Window start, shift) *LASER_SET_L0RETURNWINDOWEND (Shuttertime, L0Time, L0 Window start, L0 Window end, shift) *LASER_SET_QSWITCHEKSPLASTART (Shuttertime, QSwitch Ekspla time, shift) *LASER_SET_QSWITCHEKSPLAEND (Shuttertime, QSwitch Ekspla time, QSwitch Ekspla duration, shift) *LASER_CLEAR_COUNTERS() ===States and Transitions=== Transitions: * LOAD_RECIPE * GO_STANDBY * GO_WARM_UP * GO_ON_FREE_RUN * GO_ON_TRIGGER * GO_STBY_CONFIGURED * GO_STBY_CONFIGURED States: *STANDBY *STBY_CONFIGURED *WARM_UP *ON_TRIGGER *ON_FREE_RUN ==TOR FeeServer== ===Services=== TME 1DSFRL0 1DSFRL1L 1DSFRL1M 1DSFRL1H EDTORO IDELAY EDTRUIB0B1 EDTRUIB2B3 EDTRUIB4 LVDSIGB0B1 LVDSIGB2B3 LVDSIGB4 ===Commands=== ====Highlevel Commands==== TOR_WRITE_TME TOR_WRITE_1DSFRL0 TOR_WRITE_1DSFRL1L TOR_WRITE_1DSFRL1M TOR_WRITE_1DSFRL1H TOR_WRITE_EDTORO TOR_WRITE_IDELAY TOR_WRITE_EDTRUIB0B1 TOR_WRITE_EDTRUIB2B3 TOR_WRITE_EDTRUIB4 ====Hex Commands==== #define FEESVR_CMD_TOR (0x0e000000 | FEESERVER_CMD) #define TOR_WRITE_TME (0x010000 | FEESVR_CMD_BB) #define TOR_WRITE_1DSFRL0 (0x020000 | FEESVR_CMD_BB) #define TOR_WRITE_1DSFRL1L (0x030000 | FEESVR_CMD_BB) #define TOR_WRITE_1DSFRL1M (0x040000 | FEESVR_CMD_BB) #define TOR_WRITE_1DSFRL1H (0x050000 | FEESVR_CMD_BB) #define TOR_WRITE_EDTORO (0x060000 | FEESVR_CMD_BB) #define TOR_WRITE_IDELAY (0x070000 | FEESVR_CMD_BB) #define TOR_WRITE_EDTRUIB0B1 (0x080000 | FEESVR_CMD_BB) #define TOR_WRITE_EDTRUIB2B3 (0x090000 | FEESVR_CMD_BB) #define TOR_WRITE_EDTRUIB4 (0x0a0000 | FEESVR_CMD_BB) ===States and Transitions=== ==Gating Pulser FeeServer== ===Services=== CONFREG FWVERSION PULSESTATUS PULSECOUNTER FSMSTREG ===Commands=== ====Highlevel Commands==== GPULSER_WRITE_CONFREG; GPULSER_TOGGLE_RESET; GPULSER_TOGGLE_GLOBAL_RESET; GPULSER_WRITE_TTC_CONTROL; GPULSER_TOGGLE_TTC_RESET; GPULSER_WRITE_TTC_ROICONFIG1; GPULSER_WRITE_TTC_ROICONFIG2; GPULSER_TOGGLE_TTC_RESETCOUNTER; GPULSER_TOGGLE_TTC_ISSUETESTMODE; GPULSER_WRITE_TTC_L2LATENCY; GPULSER_WRITE_TTC_L1LATENCY; GPULSER_WRITE_TTC_ROILATENCY; GPULSER_WRITE_TTC_L1MSGLATENCY; ====Hex Commands==== #define FEESVR_CMD_GPULSER (0x0f000000 | FEESERVER_CMD) #define GPULSER_WRITE_TTC_CONTROL (0x100000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_TTC_RESET (0x200000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_ROICONFIG1 (0x300000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_ROICONFIG2 (0x400000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_TTC_RESETCOUNTER (0x500000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_TTC_ISSUETESTMODE (0x600000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_L1LATENCY (0x700000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_L2LATENCY (0x800000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_ROILATENCY (0x900000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_L1MSGLATENCY (0xA00000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_RESET (0xB00000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_GLOBAL_RESET (0xC00000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_CONFREG (0xD00000 | FEESVR_CMD_GPULSER) ===States and Transitions=== ==RCU FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== bd206ca7ed90550acea4852438cca10f66577efe 616 615 2009-07-07T11:38:18Z Dfe002 7 wikitext text/x-wiki ==Busybox FeeServer== ===Services=== *TXR *RXMP *EIDFIFOC *CEID0 *CEID1 *CEID2 *MREID0 *MREID1 *MREID2 *L0TTO *FEEBA *FSMH *RRTO *CRID *RC *BT0 *BT1 *RXMF *TMC0 *TMC1 *L0L *BCIDO *L1C *L2AC *L2RC ===Commands=== ====Hex Commands==== *FEESVR_CMD_BB (0x0c000000 | FEESERVER_CMD) *BB_INIT (0x010000 | FEESVR_CMD_BB) *INIT_BUSY_BOX (0x010000 | FEESVR_CMD_BB) //Depricated *BB_WRITE_STATUS (0x020000 | FEESVR_CMD_BB) *BB_WRITE_RXMF (0x030000 | FEESVR_CMD_BB) *BB_WRITE_RRTO (0x040000 | FEESVR_CMD_BB) *BB_WRITE_FM (0x050000 | FEESVR_CMD_BB) *BB_WRITE_FSMH (0x060000 | FEESVR_CMD_BB) *BB_WRITE_FEEBA (0x070000 | FEESVR_CMD_BB) *BB_WRITE_L0TTO (0x080000 | FEESVR_CMD_BB) *BB_WRITE_L0_TIMEOUT (0x080000 | FEESVR_CMD_BB) //Depricated *BB_WRITE_TX (0x090000 | FEESVR_CMD_BB) *BB_WRITE_TMC0 (0x0a0000 | FEESVR_CMD_BB) *BB_WRITE_TMC1 (0x0b0000 | FEESVR_CMD_BB) *BB_WRITE_TMR (0x0c0000 | FEESVR_CMD_BB) *BB_WRITE_L0L (0x0d0000 | FEESVR_CMD_BB) *BB_WRITE_BCIDO (0x0e0000 | FEESVR_CMD_BB) *BB_FIRMWARE_RESET (0x0f0000 | FEESVR_CMD_BB) ====Highlevel Commands==== *BB_WRITE_TX *BB_WRITE_L0TTO *BB_WRITE_FEEBA *BB_WRITE_FSMH *BB_WRITE_FM *BB_WRITE_RRTO *BB_WRITE_RXMF ===States and Transitions=== ==Laser Sync FeeServer== ===Services=== *MODEFREQVAL *FLASHEKSPLASTARTTIME *FLASHEKSPLAENDTIME *FLASHSPECTRONSTARTTIME *FLASHSPECTRONENDTIME *SPECTRONDELAY *L0REQUESTTIME *L0RETURNWINDOWSTART *L0RETURNWINDOWSTOP *QSWITCHEKSPLASTART *QSWITCHEKSPLASTOP *RUNMODE *SAMPLECLOCKDIVIDER *TRIGGERCONFIGURATION1 *TRIGGERCONFIGURATION2 *RCUVERSION *CTPSIGNATURE *SHUTTERCOUNTER *EKSPLAFLASHCOUNTER *SPECTRONFLASHCOUNTER *EKSPLAQSWITCHCOUNTER *SPECTRONQSWITCHCOUNTER *L0REQUESTCOUNTER *L0RECEIVEDCOUNTER *L0RECEIVEDINWINDOWCOUNTER *L0TIMEOUTCOUNTER *L0RETURNTIMER *ACTUALLASERRATE *CYCLETIMER *TTC_CONTROL *TTC_ROICONFIG1 *TTC_ROICONFIG2 *TTC_L1LATENCY *TTC_L2LATENCY *TTC_ROILATENCY *TTC_L1MSGLATENCY *TTC_PREPULSECNT *TTC_BCIDLOCAL *TTC_L0COUNTER *TTC_L1MSGCOUNTER *TTC_L2ACOUNTER *TTC_L2RCOUNTER *TTC_ROICOUNTER *TTC_HAMMINGERRCNT *TTC_ERRORCNT *TTC_BUFFEREDEVENTS *TTC_DAQHEADER1 *TTC_DAQHEADER2 *TTC_DAQHEADER3 *TTC_DAQHEADER4 *TTC_DAQHEADER5 *TTC_DAQHEADER6 *TTC_DAQHEADER7 *TTC_EVENTINFO ===Commands=== ====Hex Commands==== *LASER_WRITE_MODEFREQVAL (0xFD010000) *LASER_WRITE_FLASHEKSPLASTARTTIME (0xFD020000) *LASER_WRITE_FLASHEKSPLAENDTIME (0xFD030000) *LASER_WRITE_FLASHSPECTRONSTARTTIME (0xFD040000) *LASER_WRITE_FLASHSPECTRONENDTIME (0xFD050000) *LASER_WRITE_SPECTRONDELAY (0xFD060000) *LASER_WRITE_L0REQUESTTIME (0xFD070000) *LASER_WRITE_L0RETURNWINDOWSTART (0xFD080000) *LASER_WRITE_L0RETURNWINDOWSTOP (0xFD090000) *LASER_WRITE_QSWITCHEKSPLASTART (0xFD0A0000) *LASER_WRITE_QSWITCHEKSPLASTOP (0xFD0B0000) *LASER_WRITE_RUNMODE (0xFD0C0000) *LASER_WRITE_SAMPLECLOCKDIVIDER (0xFD0D0000) *LASER_WRITE_TRIGGERCONFIGURATION1 (0xFD0E0000) *LASER_WRITE_TRIGGERCONFIGURATION2 (0xFD0F0000) *LASER_WRITE_TTC_CONTROL (0xFD110000) *LASER_TOGGLE_TTC_RESET (0xFD120000) *LASER_WRITE_TTC_ROICONFIG1 (0xFD130000) *LASER_WRITE_TTC_ROICONFIG2 (0xFD140000) *LASER_TOGGLE_TTC_RESETCOUNTER (0xFD150000) *LASER_TOGGLE_TTC_ISSUETESTMODE (0xFD160000) *LASER_WRITE_TTC_L1LATENCY (0xFD170000) *LASER_WRITE_TTC_L2LATENCY (0xFD180000) *LASER_WRITE_TTC_ROILATENCY (0xFD190000) *LASER_WRITE_TTC_L1MSGLATENCY (0xFD1A0000) * LASER_SET_FLASHEKSPLASTARTTIME (0xFD1B0000 ) * LASER_SET_FLASHEKSPLAENDTIME (0xFD1C0000 ) * LASER_SET_SPECTRONSTARTTIME (0xFD1D0000 ) * LASER_SET_SPECTRONENDTIME (0xFD1E0000 ) * LASER_SET_SPECTRONDELAY (0xFD1F0000 ) * LASER_SET_L0REQUESTTIME (0xFD200000 ) * LASER_SET_L0RETURNWINDOWSTART (0xFD210000 ) * LASER_SET_L0RETURNWINDOWEND (0xFD220000 ) * LASER_SET_QSWITCHEKSPLASTART (0xFD230000 ) * LASER_SET_QSWITCHEKSPLAEND (0xFD240000 ) * LASER_CLEAR_COUNTERS (0xFD250000 ) ====Highlevel Commands==== *LASER_WRITE_MODEFREQVAL *LASER_WRITE_FLASHEKSPLASTARTTIME *LASER_WRITE_FLASHEKSPLAENDTIME LASER_WRITE_FLASHSPECTRONSTARTTIME *LASER_WRITE_FLASHSPECTRONENDTIME *LASER_WRITE_SPECTRONDELAY *LASER_WRITE_L0REQUESTTIME *LASER_WRITE_L0RETURNWINDOWSTART *LASER_WRITE_L0RETURNWINDOWSTOP *LASER_WRITE_QSWITCHEKSPLASTART *LASER_WRITE_QSWITCHEKSPLASTOP *LASER_WRITE_RUNMODE *LASER_WRITE_SAMPLECLOCKDIVIDER *LASER_WRITE_TRIGGERCONFIGURATION1 *LASER_WRITE_TRIGGERCONFIGURATION2 *LASER_WRITE_TTC_CONTROL *LASER_TOGGLE_TTC_RESET *LASER_WRITE_TTC_ROICONFIG1 *LASER_WRITE_TTC_ROICONFIG2 *LASER_TOGGLE_TTC_RESETCOUNTER *LASER_TOGGLE_TTC_ISSUETESTMODE *LASER_WRITE_TTC_L2LATENCY *LASER_WRITE_TTC_L1LATENCY *LASER_WRITE_TTC_ROILATENCY *LASER_WRITE_TTC_L1MSGLATENCY *LASER_SET_FLASHEKSPLASTARTTIME (Shuttertime, Flash Ekspla Time, Shift) *LASER_SET_FLASHEKSPLAENDTIME (Shuttertime, Flash Ekspla Time, Flash Ekspla duration, Shift) *LASER_SET_SPECTRONSTARTTIME (Shuttertime, Spectron Flash Time, Shift) *LASER_SET_SPECTRONENDTIME (Shuttertime, Spectron Flash Time, Spectron QSwitch Time, Shift) *LASER_SET_SPECTRONDELAY (Spectron QSwitch Veto Delay) *LASER_SET_L0REQUESTTIME (Shuttertime, L0Time, Shift) *LASER_SET_L0RETURNWINDOWSTART (Shuttertime, L0Time, L0 Window start, shift) *LASER_SET_L0RETURNWINDOWEND (Shuttertime, L0Time, L0 Window start, L0 Window end, shift) *LASER_SET_QSWITCHEKSPLASTART (Shuttertime, QSwitch Ekspla time, shift) *LASER_SET_QSWITCHEKSPLAEND (Shuttertime, QSwitch Ekspla time, QSwitch Ekspla duration, shift) *LASER_CLEAR_COUNTERS() ===States and Transitions=== Transitions: * LOAD_RECIPE * GO_STANDBY * GO_WARM_UP * GO_ON_FREE_RUN * GO_ON_TRIGGER * GO_STBY_CONFIGURED * GO_STBY_CONFIGURED States: *STANDBY *STBY_CONFIGURED *WARM_UP *ON_TRIGGER *ON_FREE_RUN ==TOR FeeServer== ===Services=== *TME *1DSFRL0 *1DSFRL1L *1DSFRL1M *1DSFRL1H *EDTORO *IDELAY *EDTRUIB0B1 *EDTRUIB2B3 *EDTRUIB4 *LVDSIGB0B1 *LVDSIGB2B3 *LVDSIGB4 ===Commands=== ====Highlevel Commands==== *TOR_WRITE_TME *TOR_WRITE_1DSFRL0 *TOR_WRITE_1DSFRL1L *TOR_WRITE_1DSFRL1M *TOR_WRITE_1DSFRL1H *TOR_WRITE_EDTORO *TOR_WRITE_IDELAY *TOR_WRITE_EDTRUIB0B1 *TOR_WRITE_EDTRUIB2B3 *TOR_WRITE_EDTRUIB4 ====Hex Commands==== *FEESVR_CMD_TOR (0x0e000000 | FEESERVER_CMD) *TOR_WRITE_TME (0x010000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL0 (0x020000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1L (0x030000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1M (0x040000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1H (0x050000 | FEESVR_CMD_BB) *TOR_WRITE_EDTORO (0x060000 | FEESVR_CMD_BB) *TOR_WRITE_IDELAY (0x070000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB0B1 (0x080000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB2B3 (0x090000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB4 (0x0a0000 | FEESVR_CMD_BB) ===States and Transitions=== ==Gating Pulser FeeServer== ===Services=== CONFREG FWVERSION PULSESTATUS PULSECOUNTER FSMSTREG ===Commands=== ====Highlevel Commands==== GPULSER_WRITE_CONFREG; GPULSER_TOGGLE_RESET; GPULSER_TOGGLE_GLOBAL_RESET; GPULSER_WRITE_TTC_CONTROL; GPULSER_TOGGLE_TTC_RESET; GPULSER_WRITE_TTC_ROICONFIG1; GPULSER_WRITE_TTC_ROICONFIG2; GPULSER_TOGGLE_TTC_RESETCOUNTER; GPULSER_TOGGLE_TTC_ISSUETESTMODE; GPULSER_WRITE_TTC_L2LATENCY; GPULSER_WRITE_TTC_L1LATENCY; GPULSER_WRITE_TTC_ROILATENCY; GPULSER_WRITE_TTC_L1MSGLATENCY; ====Hex Commands==== #define FEESVR_CMD_GPULSER (0x0f000000 | FEESERVER_CMD) #define GPULSER_WRITE_TTC_CONTROL (0x100000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_TTC_RESET (0x200000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_ROICONFIG1 (0x300000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_ROICONFIG2 (0x400000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_TTC_RESETCOUNTER (0x500000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_TTC_ISSUETESTMODE (0x600000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_L1LATENCY (0x700000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_L2LATENCY (0x800000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_ROILATENCY (0x900000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_TTC_L1MSGLATENCY (0xA00000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_RESET (0xB00000 | FEESVR_CMD_GPULSER) #define GPULSER_TOGGLE_GLOBAL_RESET (0xC00000 | FEESVR_CMD_GPULSER) #define GPULSER_WRITE_CONFREG (0xD00000 | FEESVR_CMD_GPULSER) ===States and Transitions=== ==RCU FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== 57e285b92ec93dccf59c113642c7254b8801df4e 617 616 2009-07-07T11:39:49Z Dfe002 7 wikitext text/x-wiki ==Busybox FeeServer== ===Services=== *TXR *RXMP *EIDFIFOC *CEID0 *CEID1 *CEID2 *MREID0 *MREID1 *MREID2 *L0TTO *FEEBA *FSMH *RRTO *CRID *RC *BT0 *BT1 *RXMF *TMC0 *TMC1 *L0L *BCIDO *L1C *L2AC *L2RC ===Commands=== ====Hex Commands==== *FEESVR_CMD_BB (0x0c000000 | FEESERVER_CMD) *BB_INIT (0x010000 | FEESVR_CMD_BB) *INIT_BUSY_BOX (0x010000 | FEESVR_CMD_BB) //Depricated *BB_WRITE_STATUS (0x020000 | FEESVR_CMD_BB) *BB_WRITE_RXMF (0x030000 | FEESVR_CMD_BB) *BB_WRITE_RRTO (0x040000 | FEESVR_CMD_BB) *BB_WRITE_FM (0x050000 | FEESVR_CMD_BB) *BB_WRITE_FSMH (0x060000 | FEESVR_CMD_BB) *BB_WRITE_FEEBA (0x070000 | FEESVR_CMD_BB) *BB_WRITE_L0TTO (0x080000 | FEESVR_CMD_BB) *BB_WRITE_L0_TIMEOUT (0x080000 | FEESVR_CMD_BB) //Depricated *BB_WRITE_TX (0x090000 | FEESVR_CMD_BB) *BB_WRITE_TMC0 (0x0a0000 | FEESVR_CMD_BB) *BB_WRITE_TMC1 (0x0b0000 | FEESVR_CMD_BB) *BB_WRITE_TMR (0x0c0000 | FEESVR_CMD_BB) *BB_WRITE_L0L (0x0d0000 | FEESVR_CMD_BB) *BB_WRITE_BCIDO (0x0e0000 | FEESVR_CMD_BB) *BB_FIRMWARE_RESET (0x0f0000 | FEESVR_CMD_BB) ====Highlevel Commands==== *BB_WRITE_TX *BB_WRITE_L0TTO *BB_WRITE_FEEBA *BB_WRITE_FSMH *BB_WRITE_FM *BB_WRITE_RRTO *BB_WRITE_RXMF ===States and Transitions=== ==Laser Sync FeeServer== ===Services=== *MODEFREQVAL *FLASHEKSPLASTARTTIME *FLASHEKSPLAENDTIME *FLASHSPECTRONSTARTTIME *FLASHSPECTRONENDTIME *SPECTRONDELAY *L0REQUESTTIME *L0RETURNWINDOWSTART *L0RETURNWINDOWSTOP *QSWITCHEKSPLASTART *QSWITCHEKSPLASTOP *RUNMODE *SAMPLECLOCKDIVIDER *TRIGGERCONFIGURATION1 *TRIGGERCONFIGURATION2 *RCUVERSION *CTPSIGNATURE *SHUTTERCOUNTER *EKSPLAFLASHCOUNTER *SPECTRONFLASHCOUNTER *EKSPLAQSWITCHCOUNTER *SPECTRONQSWITCHCOUNTER *L0REQUESTCOUNTER *L0RECEIVEDCOUNTER *L0RECEIVEDINWINDOWCOUNTER *L0TIMEOUTCOUNTER *L0RETURNTIMER *ACTUALLASERRATE *CYCLETIMER *TTC_CONTROL *TTC_ROICONFIG1 *TTC_ROICONFIG2 *TTC_L1LATENCY *TTC_L2LATENCY *TTC_ROILATENCY *TTC_L1MSGLATENCY *TTC_PREPULSECNT *TTC_BCIDLOCAL *TTC_L0COUNTER *TTC_L1MSGCOUNTER *TTC_L2ACOUNTER *TTC_L2RCOUNTER *TTC_ROICOUNTER *TTC_HAMMINGERRCNT *TTC_ERRORCNT *TTC_BUFFEREDEVENTS *TTC_DAQHEADER1 *TTC_DAQHEADER2 *TTC_DAQHEADER3 *TTC_DAQHEADER4 *TTC_DAQHEADER5 *TTC_DAQHEADER6 *TTC_DAQHEADER7 *TTC_EVENTINFO ===Commands=== ====Hex Commands==== *LASER_WRITE_MODEFREQVAL (0xFD010000) *LASER_WRITE_FLASHEKSPLASTARTTIME (0xFD020000) *LASER_WRITE_FLASHEKSPLAENDTIME (0xFD030000) *LASER_WRITE_FLASHSPECTRONSTARTTIME (0xFD040000) *LASER_WRITE_FLASHSPECTRONENDTIME (0xFD050000) *LASER_WRITE_SPECTRONDELAY (0xFD060000) *LASER_WRITE_L0REQUESTTIME (0xFD070000) *LASER_WRITE_L0RETURNWINDOWSTART (0xFD080000) *LASER_WRITE_L0RETURNWINDOWSTOP (0xFD090000) *LASER_WRITE_QSWITCHEKSPLASTART (0xFD0A0000) *LASER_WRITE_QSWITCHEKSPLASTOP (0xFD0B0000) *LASER_WRITE_RUNMODE (0xFD0C0000) *LASER_WRITE_SAMPLECLOCKDIVIDER (0xFD0D0000) *LASER_WRITE_TRIGGERCONFIGURATION1 (0xFD0E0000) *LASER_WRITE_TRIGGERCONFIGURATION2 (0xFD0F0000) *LASER_WRITE_TTC_CONTROL (0xFD110000) *LASER_TOGGLE_TTC_RESET (0xFD120000) *LASER_WRITE_TTC_ROICONFIG1 (0xFD130000) *LASER_WRITE_TTC_ROICONFIG2 (0xFD140000) *LASER_TOGGLE_TTC_RESETCOUNTER (0xFD150000) *LASER_TOGGLE_TTC_ISSUETESTMODE (0xFD160000) *LASER_WRITE_TTC_L1LATENCY (0xFD170000) *LASER_WRITE_TTC_L2LATENCY (0xFD180000) *LASER_WRITE_TTC_ROILATENCY (0xFD190000) *LASER_WRITE_TTC_L1MSGLATENCY (0xFD1A0000) * LASER_SET_FLASHEKSPLASTARTTIME (0xFD1B0000 ) * LASER_SET_FLASHEKSPLAENDTIME (0xFD1C0000 ) * LASER_SET_SPECTRONSTARTTIME (0xFD1D0000 ) * LASER_SET_SPECTRONENDTIME (0xFD1E0000 ) * LASER_SET_SPECTRONDELAY (0xFD1F0000 ) * LASER_SET_L0REQUESTTIME (0xFD200000 ) * LASER_SET_L0RETURNWINDOWSTART (0xFD210000 ) * LASER_SET_L0RETURNWINDOWEND (0xFD220000 ) * LASER_SET_QSWITCHEKSPLASTART (0xFD230000 ) * LASER_SET_QSWITCHEKSPLAEND (0xFD240000 ) * LASER_CLEAR_COUNTERS (0xFD250000 ) ====Highlevel Commands==== *LASER_WRITE_MODEFREQVAL *LASER_WRITE_FLASHEKSPLASTARTTIME *LASER_WRITE_FLASHEKSPLAENDTIME LASER_WRITE_FLASHSPECTRONSTARTTIME *LASER_WRITE_FLASHSPECTRONENDTIME *LASER_WRITE_SPECTRONDELAY *LASER_WRITE_L0REQUESTTIME *LASER_WRITE_L0RETURNWINDOWSTART *LASER_WRITE_L0RETURNWINDOWSTOP *LASER_WRITE_QSWITCHEKSPLASTART *LASER_WRITE_QSWITCHEKSPLASTOP *LASER_WRITE_RUNMODE *LASER_WRITE_SAMPLECLOCKDIVIDER *LASER_WRITE_TRIGGERCONFIGURATION1 *LASER_WRITE_TRIGGERCONFIGURATION2 *LASER_WRITE_TTC_CONTROL *LASER_TOGGLE_TTC_RESET *LASER_WRITE_TTC_ROICONFIG1 *LASER_WRITE_TTC_ROICONFIG2 *LASER_TOGGLE_TTC_RESETCOUNTER *LASER_TOGGLE_TTC_ISSUETESTMODE *LASER_WRITE_TTC_L2LATENCY *LASER_WRITE_TTC_L1LATENCY *LASER_WRITE_TTC_ROILATENCY *LASER_WRITE_TTC_L1MSGLATENCY *LASER_SET_FLASHEKSPLASTARTTIME (Shuttertime, Flash Ekspla Time, Shift) *LASER_SET_FLASHEKSPLAENDTIME (Shuttertime, Flash Ekspla Time, Flash Ekspla duration, Shift) *LASER_SET_SPECTRONSTARTTIME (Shuttertime, Spectron Flash Time, Shift) *LASER_SET_SPECTRONENDTIME (Shuttertime, Spectron Flash Time, Spectron QSwitch Time, Shift) *LASER_SET_SPECTRONDELAY (Spectron QSwitch Veto Delay) *LASER_SET_L0REQUESTTIME (Shuttertime, L0Time, Shift) *LASER_SET_L0RETURNWINDOWSTART (Shuttertime, L0Time, L0 Window start, shift) *LASER_SET_L0RETURNWINDOWEND (Shuttertime, L0Time, L0 Window start, L0 Window end, shift) *LASER_SET_QSWITCHEKSPLASTART (Shuttertime, QSwitch Ekspla time, shift) *LASER_SET_QSWITCHEKSPLAEND (Shuttertime, QSwitch Ekspla time, QSwitch Ekspla duration, shift) *LASER_CLEAR_COUNTERS() ===States and Transitions=== Transitions: * LOAD_RECIPE * GO_STANDBY * GO_WARM_UP * GO_ON_FREE_RUN * GO_ON_TRIGGER * GO_STBY_CONFIGURED * GO_STBY_CONFIGURED States: *STANDBY *STBY_CONFIGURED *WARM_UP *ON_TRIGGER *ON_FREE_RUN ==TOR FeeServer== ===Services=== *TME *1DSFRL0 *1DSFRL1L *1DSFRL1M *1DSFRL1H *EDTORO *IDELAY *EDTRUIB0B1 *EDTRUIB2B3 *EDTRUIB4 *LVDSIGB0B1 *LVDSIGB2B3 *LVDSIGB4 ===Commands=== ====Highlevel Commands==== *TOR_WRITE_TME *TOR_WRITE_1DSFRL0 *TOR_WRITE_1DSFRL1L *TOR_WRITE_1DSFRL1M *TOR_WRITE_1DSFRL1H *TOR_WRITE_EDTORO *TOR_WRITE_IDELAY *TOR_WRITE_EDTRUIB0B1 *TOR_WRITE_EDTRUIB2B3 *TOR_WRITE_EDTRUIB4 ====Hex Commands==== *FEESVR_CMD_TOR (0x0e000000 | FEESERVER_CMD) *TOR_WRITE_TME (0x010000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL0 (0x020000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1L (0x030000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1M (0x040000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1H (0x050000 | FEESVR_CMD_BB) *TOR_WRITE_EDTORO (0x060000 | FEESVR_CMD_BB) *TOR_WRITE_IDELAY (0x070000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB0B1 (0x080000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB2B3 (0x090000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB4 (0x0a0000 | FEESVR_CMD_BB) ===States and Transitions=== ==Gating Pulser FeeServer== ===Services=== *CONFREG *FWVERSION *PULSESTATUS *PULSECOUNTER *FSMSTREG ===Commands=== ====Highlevel Commands==== *GPULSER_WRITE_CONFREG; *GPULSER_TOGGLE_RESET; *GPULSER_TOGGLE_GLOBAL_RESET; *GPULSER_WRITE_TTC_CONTROL; *GPULSER_TOGGLE_TTC_RESET; *GPULSER_WRITE_TTC_ROICONFIG1; *GPULSER_WRITE_TTC_ROICONFIG2; *GPULSER_TOGGLE_TTC_RESETCOUNTER; *GPULSER_TOGGLE_TTC_ISSUETESTMODE; *GPULSER_WRITE_TTC_L2LATENCY; *GPULSER_WRITE_TTC_L1LATENCY; *GPULSER_WRITE_TTC_ROILATENCY; *GPULSER_WRITE_TTC_L1MSGLATENCY; ====Hex Commands==== *FEESVR_CMD_GPULSER (0x0f000000 | FEESERVER_CMD) *GPULSER_WRITE_TTC_CONTROL (0x100000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_TTC_RESET (0x200000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_ROICONFIG1 (0x300000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_ROICONFIG2 (0x400000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_TTC_RESETCOUNTER (0x500000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_TTC_ISSUETESTMODE (0x600000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_L1LATENCY (0x700000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_L2LATENCY (0x800000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_ROILATENCY (0x900000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_L1MSGLATENCY (0xA00000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_RESET (0xB00000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_GLOBAL_RESET (0xC00000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_CONFREG (0xD00000 | FEESVR_CMD_GPULSER) ===States and Transitions=== ==RCU FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== 3f971597123719a94367907d090027b69c987d32 618 617 2009-07-07T11:45:40Z Dfe002 7 wikitext text/x-wiki ==Busybox FeeServer== ===Services=== *TXR *RXMP *EIDFIFOC *CEID0 *CEID1 *CEID2 *MREID0 *MREID1 *MREID2 *L0TTO *FEEBA *FSMH *RRTO *CRID *RC *BT0 *BT1 *RXMF *TMC0 *TMC1 *L0L *BCIDO *L1C *L2AC *L2RC ===Commands=== ====Hex Commands==== *FEESVR_CMD_BB (0x0c000000 | FEESERVER_CMD) *BB_INIT (0x010000 | FEESVR_CMD_BB) *INIT_BUSY_BOX (0x010000 | FEESVR_CMD_BB) //Depricated *BB_WRITE_STATUS (0x020000 | FEESVR_CMD_BB) *BB_WRITE_RXMF (0x030000 | FEESVR_CMD_BB) *BB_WRITE_RRTO (0x040000 | FEESVR_CMD_BB) *BB_WRITE_FM (0x050000 | FEESVR_CMD_BB) *BB_WRITE_FSMH (0x060000 | FEESVR_CMD_BB) *BB_WRITE_FEEBA (0x070000 | FEESVR_CMD_BB) *BB_WRITE_L0TTO (0x080000 | FEESVR_CMD_BB) *BB_WRITE_L0_TIMEOUT (0x080000 | FEESVR_CMD_BB) //Depricated *BB_WRITE_TX (0x090000 | FEESVR_CMD_BB) *BB_WRITE_TMC0 (0x0a0000 | FEESVR_CMD_BB) *BB_WRITE_TMC1 (0x0b0000 | FEESVR_CMD_BB) *BB_WRITE_TMR (0x0c0000 | FEESVR_CMD_BB) *BB_WRITE_L0L (0x0d0000 | FEESVR_CMD_BB) *BB_WRITE_BCIDO (0x0e0000 | FEESVR_CMD_BB) *BB_FIRMWARE_RESET (0x0f0000 | FEESVR_CMD_BB) ====Highlevel Commands==== *BB_WRITE_TX *BB_WRITE_L0TTO *BB_WRITE_FEEBA *BB_WRITE_FSMH *BB_WRITE_FM *BB_WRITE_RRTO *BB_WRITE_RXMF ===States and Transitions=== ==Laser Sync FeeServer== ===Services=== *MODEFREQVAL *FLASHEKSPLASTARTTIME *FLASHEKSPLAENDTIME *FLASHSPECTRONSTARTTIME *FLASHSPECTRONENDTIME *SPECTRONDELAY *L0REQUESTTIME *L0RETURNWINDOWSTART *L0RETURNWINDOWSTOP *QSWITCHEKSPLASTART *QSWITCHEKSPLASTOP *RUNMODE *SAMPLECLOCKDIVIDER *TRIGGERCONFIGURATION1 *TRIGGERCONFIGURATION2 *RCUVERSION *CTPSIGNATURE *SHUTTERCOUNTER *EKSPLAFLASHCOUNTER *SPECTRONFLASHCOUNTER *EKSPLAQSWITCHCOUNTER *SPECTRONQSWITCHCOUNTER *L0REQUESTCOUNTER *L0RECEIVEDCOUNTER *L0RECEIVEDINWINDOWCOUNTER *L0TIMEOUTCOUNTER *L0RETURNTIMER *ACTUALLASERRATE *CYCLETIMER *TTC_CONTROL *TTC_ROICONFIG1 *TTC_ROICONFIG2 *TTC_L1LATENCY *TTC_L2LATENCY *TTC_ROILATENCY *TTC_L1MSGLATENCY *TTC_PREPULSECNT *TTC_BCIDLOCAL *TTC_L0COUNTER *TTC_L1MSGCOUNTER *TTC_L2ACOUNTER *TTC_L2RCOUNTER *TTC_ROICOUNTER *TTC_HAMMINGERRCNT *TTC_ERRORCNT *TTC_BUFFEREDEVENTS *TTC_DAQHEADER1 *TTC_DAQHEADER2 *TTC_DAQHEADER3 *TTC_DAQHEADER4 *TTC_DAQHEADER5 *TTC_DAQHEADER6 *TTC_DAQHEADER7 *TTC_EVENTINFO ===Commands=== ====Hex Commands==== *LASER_WRITE_MODEFREQVAL (0xFD010000) *LASER_WRITE_FLASHEKSPLASTARTTIME (0xFD020000) *LASER_WRITE_FLASHEKSPLAENDTIME (0xFD030000) *LASER_WRITE_FLASHSPECTRONSTARTTIME (0xFD040000) *LASER_WRITE_FLASHSPECTRONENDTIME (0xFD050000) *LASER_WRITE_SPECTRONDELAY (0xFD060000) *LASER_WRITE_L0REQUESTTIME (0xFD070000) *LASER_WRITE_L0RETURNWINDOWSTART (0xFD080000) *LASER_WRITE_L0RETURNWINDOWSTOP (0xFD090000) *LASER_WRITE_QSWITCHEKSPLASTART (0xFD0A0000) *LASER_WRITE_QSWITCHEKSPLASTOP (0xFD0B0000) *LASER_WRITE_RUNMODE (0xFD0C0000) *LASER_WRITE_SAMPLECLOCKDIVIDER (0xFD0D0000) *LASER_WRITE_TRIGGERCONFIGURATION1 (0xFD0E0000) *LASER_WRITE_TRIGGERCONFIGURATION2 (0xFD0F0000) *LASER_WRITE_TTC_CONTROL (0xFD110000) *LASER_TOGGLE_TTC_RESET (0xFD120000) *LASER_WRITE_TTC_ROICONFIG1 (0xFD130000) *LASER_WRITE_TTC_ROICONFIG2 (0xFD140000) *LASER_TOGGLE_TTC_RESETCOUNTER (0xFD150000) *LASER_TOGGLE_TTC_ISSUETESTMODE (0xFD160000) *LASER_WRITE_TTC_L1LATENCY (0xFD170000) *LASER_WRITE_TTC_L2LATENCY (0xFD180000) *LASER_WRITE_TTC_ROILATENCY (0xFD190000) *LASER_WRITE_TTC_L1MSGLATENCY (0xFD1A0000) * LASER_SET_FLASHEKSPLASTARTTIME (0xFD1B0000 ) * LASER_SET_FLASHEKSPLAENDTIME (0xFD1C0000 ) * LASER_SET_SPECTRONSTARTTIME (0xFD1D0000 ) * LASER_SET_SPECTRONENDTIME (0xFD1E0000 ) * LASER_SET_SPECTRONDELAY (0xFD1F0000 ) * LASER_SET_L0REQUESTTIME (0xFD200000 ) * LASER_SET_L0RETURNWINDOWSTART (0xFD210000 ) * LASER_SET_L0RETURNWINDOWEND (0xFD220000 ) * LASER_SET_QSWITCHEKSPLASTART (0xFD230000 ) * LASER_SET_QSWITCHEKSPLAEND (0xFD240000 ) * LASER_CLEAR_COUNTERS (0xFD250000 ) ====Highlevel Commands==== *LASER_WRITE_MODEFREQVAL *LASER_WRITE_FLASHEKSPLASTARTTIME *LASER_WRITE_FLASHEKSPLAENDTIME LASER_WRITE_FLASHSPECTRONSTARTTIME *LASER_WRITE_FLASHSPECTRONENDTIME *LASER_WRITE_SPECTRONDELAY *LASER_WRITE_L0REQUESTTIME *LASER_WRITE_L0RETURNWINDOWSTART *LASER_WRITE_L0RETURNWINDOWSTOP *LASER_WRITE_QSWITCHEKSPLASTART *LASER_WRITE_QSWITCHEKSPLASTOP *LASER_WRITE_RUNMODE *LASER_WRITE_SAMPLECLOCKDIVIDER *LASER_WRITE_TRIGGERCONFIGURATION1 *LASER_WRITE_TRIGGERCONFIGURATION2 *LASER_WRITE_TTC_CONTROL *LASER_TOGGLE_TTC_RESET *LASER_WRITE_TTC_ROICONFIG1 *LASER_WRITE_TTC_ROICONFIG2 *LASER_TOGGLE_TTC_RESETCOUNTER *LASER_TOGGLE_TTC_ISSUETESTMODE *LASER_WRITE_TTC_L2LATENCY *LASER_WRITE_TTC_L1LATENCY *LASER_WRITE_TTC_ROILATENCY *LASER_WRITE_TTC_L1MSGLATENCY *LASER_SET_FLASHEKSPLASTARTTIME (Shuttertime, Flash Ekspla Time, Shift) *LASER_SET_FLASHEKSPLAENDTIME (Shuttertime, Flash Ekspla Time, Flash Ekspla duration, Shift) *LASER_SET_SPECTRONSTARTTIME (Shuttertime, Spectron Flash Time, Shift) *LASER_SET_SPECTRONENDTIME (Shuttertime, Spectron Flash Time, Spectron QSwitch Time, Shift) *LASER_SET_SPECTRONDELAY (Spectron QSwitch Veto Delay) *LASER_SET_L0REQUESTTIME (Shuttertime, L0Time, Shift) *LASER_SET_L0RETURNWINDOWSTART (Shuttertime, L0Time, L0 Window start, shift) *LASER_SET_L0RETURNWINDOWEND (Shuttertime, L0Time, L0 Window start, L0 Window end, shift) *LASER_SET_QSWITCHEKSPLASTART (Shuttertime, QSwitch Ekspla time, shift) *LASER_SET_QSWITCHEKSPLAEND (Shuttertime, QSwitch Ekspla time, QSwitch Ekspla duration, shift) *LASER_CLEAR_COUNTERS() ===States and Transitions=== Transitions: * LOAD_RECIPE * GO_STANDBY * GO_WARM_UP * GO_ON_FREE_RUN * GO_ON_TRIGGER * GO_STBY_CONFIGURED * GO_STBY_CONFIGURED States: *STANDBY *STBY_CONFIGURED *WARM_UP *ON_TRIGGER *ON_FREE_RUN ==TOR FeeServer== ===Services=== *TME *1DSFRL0 *1DSFRL1L *1DSFRL1M *1DSFRL1H *EDTORO *IDELAY *EDTRUIB0B1 *EDTRUIB2B3 *EDTRUIB4 *LVDSIGB0B1 *LVDSIGB2B3 *LVDSIGB4 ===Commands=== ====Highlevel Commands==== *TOR_WRITE_TME *TOR_WRITE_1DSFRL0 *TOR_WRITE_1DSFRL1L *TOR_WRITE_1DSFRL1M *TOR_WRITE_1DSFRL1H *TOR_WRITE_EDTORO *TOR_WRITE_IDELAY *TOR_WRITE_EDTRUIB0B1 *TOR_WRITE_EDTRUIB2B3 *TOR_WRITE_EDTRUIB4 ====Hex Commands==== *FEESVR_CMD_TOR (0x0e000000 | FEESERVER_CMD) *TOR_WRITE_TME (0x010000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL0 (0x020000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1L (0x030000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1M (0x040000 | FEESVR_CMD_BB) *TOR_WRITE_1DSFRL1H (0x050000 | FEESVR_CMD_BB) *TOR_WRITE_EDTORO (0x060000 | FEESVR_CMD_BB) *TOR_WRITE_IDELAY (0x070000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB0B1 (0x080000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB2B3 (0x090000 | FEESVR_CMD_BB) *TOR_WRITE_EDTRUIB4 (0x0a0000 | FEESVR_CMD_BB) ===States and Transitions=== ==Gating Pulser FeeServer== ===Services=== *CONFREG *FWVERSION *PULSESTATUS *PULSECOUNTER *FSMSTREG ===Commands=== ====Highlevel Commands==== *GPULSER_WRITE_CONFREG; *GPULSER_TOGGLE_RESET; *GPULSER_TOGGLE_GLOBAL_RESET; *GPULSER_WRITE_TTC_CONTROL; *GPULSER_TOGGLE_TTC_RESET; *GPULSER_WRITE_TTC_ROICONFIG1; *GPULSER_WRITE_TTC_ROICONFIG2; *GPULSER_TOGGLE_TTC_RESETCOUNTER; *GPULSER_TOGGLE_TTC_ISSUETESTMODE; *GPULSER_WRITE_TTC_L2LATENCY; *GPULSER_WRITE_TTC_L1LATENCY; *GPULSER_WRITE_TTC_ROILATENCY; *GPULSER_WRITE_TTC_L1MSGLATENCY; ====Hex Commands==== *FEESVR_CMD_GPULSER (0x0f000000 | FEESERVER_CMD) *GPULSER_WRITE_TTC_CONTROL (0x100000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_TTC_RESET (0x200000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_ROICONFIG1 (0x300000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_ROICONFIG2 (0x400000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_TTC_RESETCOUNTER (0x500000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_TTC_ISSUETESTMODE (0x600000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_L1LATENCY (0x700000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_L2LATENCY (0x800000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_ROILATENCY (0x900000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_TTC_L1MSGLATENCY (0xA00000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_RESET (0xB00000 | FEESVR_CMD_GPULSER) *GPULSER_TOGGLE_GLOBAL_RESET (0xC00000 | FEESVR_CMD_GPULSER) *GPULSER_WRITE_CONFREG (0xD00000 | FEESVR_CMD_GPULSER) ===States and Transitions=== ==RCU FeeServer== ===Services=== ===Commands=== ====Highlevel Commands==== ===States and Transitions=== [[User:Dfe002|Dominik]] 11:45, 7 July 2009 (UTC) dac06cdcc54e00e763e81f34e57c0df74ea76c7c File:Bike.jpg 6 195 619 2009-07-08T16:00:46Z Ato061 22 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Wishlist 0 196 630 2009-08-19T11:41:48Z Dfe002 7 Created page with 'Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find ...' wikitext text/x-wiki Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find money for it. ==XYZ-table setup== * 1µm fiber to scan the detectors. * optical gating grid to calibrate the XYZ-table. [[User:Dfe002|Dominik]] 11:41, 19 August 2009 (UTC) 0f12b3bbdda0088e8e6f7f13cf72405924339423 Material 0 197 636 2009-08-21T07:50:54Z Dfe002 7 Created page with 'Some material for presentations should go here. Plots can be discussed during next meeting.' wikitext text/x-wiki Some material for presentations should go here. Plots can be discussed during next meeting. 8503982c8bb090370f08cfdbcf3e8790bb538505 User:St10175 2 198 637 2009-08-21T09:01:10Z Dfe002 7 Created page with 'Camilla' wikitext text/x-wiki Camilla 695e26ac527003167ec0fda478dc3a7283b7e10b 639 637 2009-08-21T10:49:55Z Dfe002 7 wikitext text/x-wiki Camilla Hanquist Stokkevåg f02f8358857e33cf362b006217125f5cf066604c User:Mri083 2 199 638 2009-08-21T10:49:09Z Dfe002 7 Created page with 'Matthias Rudolph Richter' wikitext text/x-wiki Matthias Rudolph Richter 376dcf8ba011dc83091158e492fa86c7102c2057 Experimental Nuclear Physics group 0 2 641 18 2009-08-24T07:24:58Z Dfe002 7 wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[PHOS PVSS panels]] * [[PHOS TOR documentation]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Tips & Tricks corner]] <center>[[Image:alice.gif]]</center> 96d4ac97a6a8aaecbdddbd61d67c83c6210bd6b4 643 641 2009-08-24T07:31:57Z Dfe002 7 wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[PHOS PVSS panels]] * [[PHOS TOR]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Tips & Tricks corner]] <center>[[Image:alice.gif]]</center> 57d8929c84e7fe7e9faefe09a216af87710d3e93 PHOS TOR 0 201 644 2009-08-24T07:36:15Z Dfe002 7 Created page with '= TOR Documentation = * TOR overview * Firmware Version history ** Version 1.0 ** Version 1.1 * Download section ** Version 1.0 ** Version 1.1 ** Documentation = TOR FeeSer...' wikitext text/x-wiki = TOR Documentation = * TOR overview * Firmware Version history ** Version 1.0 ** Version 1.1 * Download section ** Version 1.0 ** Version 1.1 ** Documentation = TOR FeeServer = see here: https://wikihost.uib.no/ift/index.php/Documentation_of_different_FeeServer_Control_Engines#TOR_FeeServer 32669d0752a18133be5aef20043442bc02897df7 645 644 2009-08-24T07:37:13Z Dfe002 7 wikitext text/x-wiki = TOR Documentation = * TOR overview * Firmware Version history ** Version 1.0 ** Version 1.1 * Download section ** Version 1.0 ** Version 1.1 ** Documentation = TOR FeeServer = see here: https://wikihost.uib.no/ift/index.php/Documentation_of_different_FeeServer_Control_Engines#TOR_FeeServer [[User:Dfe002|Dominik]] 07:37, 24 August 2009 (UTC) ae87b80af76ffcff439144cf3f41493c46990eec PHYS222 0 202 647 2009-08-24T09:07:22Z Nfyku 4 Created page with '== Nettressurser for bruk i PHYS222 == === Halvlederfysikk === [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Kretssimulering ...' wikitext text/x-wiki == Nettressurser for bruk i PHYS222 == === Halvlederfysikk === [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] 8c9d0c25f2d1dd258c76fe678677c296be488043 648 647 2009-08-24T09:10:33Z Nfyku 4 wikitext text/x-wiki == Nettressurser for bruk i PHYS222 == === Halvlederfysikk === [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] == Prosessteknologi == [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] a418611c6838e4e105f8b2d91318bddccef033b7 654 648 2009-08-24T12:06:49Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == == Fagbøker == * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] == Prosessteknologi == [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] 759b8957e67e6deb414d685f84a632e5e46aa0f8 655 654 2009-08-24T12:07:15Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == == Fagbøker == * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] fe6bd3a842dc07c15f49e3d67ef440650f9a6a20 656 655 2009-08-24T12:07:41Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] b660eca4cdb4e031258c1808e935c2d0d9271e24 670 656 2009-08-25T09:09:00Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] 8705e0b820acead86e0e5975068313bf7fd09711 Experimental Nuclear Physics group 0 2 649 643 2009-08-24T09:26:58Z Dfe002 7 wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[PHOS PVSS panels]] * [[PHOS TOR]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Tips & Tricks corner]] * [[Coming to CERN]] <center>[[Image:alice.gif]]</center> f00a0ade17db33dff85a9182cbb7ddd64152e4f3 Coming to CERN 0 203 650 2009-08-24T09:53:17Z Dfe002 7 Created page with 'Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled C...' wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 == To do shifts == * You need a security course, go to the Registration Service, building 55 (http://building.web.cern.ch/map/building?bno=55) * Request access for the counting room in edh: https://edh.cern.ch --> Access Request. The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * Book your shifts as: https://alicesms.cern.ch/ [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) f9c7c196553ffa9f980e9d250e24dc3c34c7f732 651 650 2009-08-24T09:56:48Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 * You need a paper that states your affiliation with the University in english, or a student card. == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 == To do shifts == * You need a security course, go to the Registration Service, building 55 (http://building.web.cern.ch/map/building?bno=55) * Request access for the counting room in edh: https://edh.cern.ch --> Access Request. The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * Book your shifts as: https://alicesms.cern.ch/ [[User:Dfe002|Dominik]] 09:56, 24 August 2009 (UTC) 8537ed4793cefb004779cae8eb2aa24cfd905f52 652 651 2009-08-24T11:47:54Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 == To do shifts == * You need a security course, go to the Registration Service, building 55 (http://building.web.cern.ch/map/building?bno=55) * Request access for the counting room in edh: https://edh.cern.ch --> Access Request. The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * Book your shifts as: https://alicesms.cern.ch/ [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) f9c7c196553ffa9f980e9d250e24dc3c34c7f732 668 652 2009-08-25T08:47:40Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 == To do shifts == * You need a security course, go to the Registration Service, building 55 (http://building.web.cern.ch/map/building?bno=55) * Request access for the counting room in edh: https://edh.cern.ch --> Access Request. The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) f2802305a21aa34bc4c2ebde2523a82f3f6a8b28 669 668 2009-08-25T08:56:43Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 == To do shifts == * You need a security course, go to the Registration Service, building 55 (http://building.web.cern.ch/map/building?bno=55) * Request access for the counting room in edh: https://edh.cern.ch --> Access Request. The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) f3b514c49ff2c860deb068faf180275fae45f2a0 688 669 2009-09-01T09:54:07Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 * If you want to use the Bergen car, you need a CERN drivings license. Bring your drivings licence and go to the ALICE secreteriat. They will scan this in and request it for you. To get the CERN driving license, you need security course level 1+2, see below. == To do shifts == * You need a security course, this you can do online: (http://sir.cern.ch) * Request access for the control room in edh: https://edh.cern.ch --> Access Request. NB: You need a special EDH-password to request, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) ff28a9a9bd4b1e341f9ef5100dc299b65f762429 689 688 2009-09-01T11:40:08Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html. If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. -St.Genis- (Lies between CERN and ALICE) * http://balladins.eu/fiche_hotel.php?id=166 * http://www.hotel-sofia.com/ -Between CERN and Geneve- * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 * If you want to use the Bergen car, you need a CERN drivings license. Bring your drivings licence and go to the ALICE secreteriat. They will scan this in and request it for you. To get the CERN driving license, you need security course level 1+2, see below. == To do shifts == * You need a security course, this you can do online: (http://sir.cern.ch) * Request access for the control room in edh: https://edh.cern.ch --> Access Request. NB: You need a special EDH-password to be able to request, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) d78feca979868b343cfa017b74747430523832ff 690 689 2009-09-01T11:47:29Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html. If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. -St.Genis- (Lies between CERN and ALICE) * http://balladins.eu/fiche_hotel.php?id=166 * http://www.hotel-sofia.com/ -Between CERN and Geneve- * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 * If you want to use the Bergen car, you need a CERN drivings license. Bring your drivings licence and go to the ALICE secreteriat. They will scan this in and request it for you. To get the CERN driving license, you need security course level 1+2, see below. == To do shifts == * You need a security course, this you can do online: (http://sir.cern.ch) * Request access for the control room in edh: https://edh.cern.ch --> Access Request. NB: You need a special EDH-password to be able to request, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * HLT shiftguide: https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) 51bab57d750f65abc5b64b7ec3e7832e2cb5fd24 692 690 2009-09-01T12:20:03Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == * Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html. If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. -St.Genis- (Lies between CERN and ALICE) * http://balladins.eu/fiche_hotel.php?id=166 * http://www.hotel-sofia.com/ -Between CERN and Geneve- * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 * If you want to use the Bergen car, you need a CERN drivings license. Bring your drivings licence and go to the ALICE secreteriat. They will scan this in and request it for you. To get the CERN driving license, you need security course level 1+2, see below. == To do shifts == * You need a security course, this you can do online: (http://sir.cern.ch). * Request access for the control room in edh: https://edh.cern.ch --> Access Request. NB: You need a special EDH-password to be able to request, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * HLT shiftguide: https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 09:53, 24 August 2009 (UTC) 5fd64c92eca7c4e06dbfed19acdfa29ebf21e390 693 692 2009-09-01T12:44:14Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == -Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html. If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. *Hint: If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended - as above. -St.Genis- (Lies between CERN and ALICE) * http://balladins.eu/fiche_hotel.php?id=166 * http://www.hotel-sofia.com/ -Between CERN and Geneve- * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 * If you want to use the Bergen car, you need a CERN drivings license. Bring your drivings licence and go to the ALICE secreteriat. They will scan this in and request it for you. To get the CERN driving license, you need security course level 1+2, see below. == To do shifts == * You need a security course, this you can do online: (http://sir.cern.ch). * Request access for the control room in edh: https://edh.cern.ch --> Access Request. NB: You need a special EDH-password to be able to request, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * HLT shiftguide: https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 1 September 2009 (UTC) 3e705cf7053024f2dfaff0d9152232b09010413b 697 693 2009-09-01T13:36:27Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == -Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html. If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. *Hint: If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended - as above. -St.Genis- (Lies between CERN and ALICE) * http://balladins.eu/fiche_hotel.php?id=166 * http://www.hotel-sofia.com/ -Between CERN and Geneve- * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 * If you want to use the Bergen car, you need a CERN drivings license. Bring your drivings licence and go to the ALICE secreteriat. They will scan this in and request it for you. To get the CERN driving license, you need security course level 1+2, see below. == To do shifts == * You need a security course, this you can do online: (http://sir.cern.ch). * Request access for the control room in edh: https://edh.cern.ch --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * HLT shiftguide: https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 1 September 2009 (UTC) 36fc7ca95fe4c454faee61f27665c1b2608d3e10 698 697 2009-09-01T13:39:19Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == -Cern hostel: http://housing-service.web.cern.ch/housing-service/hostelwelc.html. If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. *Hint: If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended - as above. -St.Genis- (Lies between CERN and ALICE) * http://balladins.eu/fiche_hotel.php?id=166 * http://www.hotel-sofia.com/ -Between CERN and Geneve- * http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the Users office to get your contract fixed (http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010), afterwards you get your key card from the registration office (http://building.web.cern.ch/map/building?bno=55). * If you want a key to the Bergen office, go to the ALICE secreteriat and ask for it (http://building.web.cern.ch/map/building?bno=301, http://aliceinfo.cern.ch/Collaboration/General/secretariat/) * To rent a bicycle, go here: http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html, http://building.web.cern.ch/map/building?bno=124 * If you want to use the Bergen car, you need a CERN drivings license. Bring your drivings licence and go to the ALICE secreteriat. They will scan this in and request it for you. To get the CERN driving license, you need security course level 1+2, see below. You will receive an email that you should sign the request at http://edh.cern.ch, for this you need password as described below. == To do shifts == * You need a security course, this you can do online: (http://sir.cern.ch). * Request access for the control room in edh: https://edh.cern.ch --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the TPC&TRD shiftguide: http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf * HLT shiftguide: https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf * Book your shifts as: https://alicesms.cern.ch/ * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook (https://alice-logbook.cern.ch), ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 1 September 2009 (UTC) b04abc76d57b6b699b5c676b5600ee6f2361f96d Microelectronics group 0 25 653 646 2009-08-24T12:05:14Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/mgc/ic.2006.2b/2006.2b_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Øvingsoppgaver i PHYS321 [[Category:Mikroelektronikk]] d2fd5fae8e8b444bf37b37a04d2d9bb2a5177cc9 File:TOR specification.doc 6 204 657 2009-08-24T13:12:05Z Lli003 32 It is specification for TOR. wikitext text/x-wiki It is specification for TOR. dd74fc9e5d91dbb44eed595c2d21ecd89b3b1d50 File:Instruction for TOR.doc 6 205 658 2009-08-24T13:13:27Z Lli003 32 It is a instruction for TOR at P2 wikitext text/x-wiki It is a instruction for TOR at P2 0b90d4c2c21279c57eb0cc0045ea3b3f4296debc User:Lli003 2 206 659 2009-08-24T13:22:41Z Dfe002 7 Created page with 'Lijiao Liu' wikitext text/x-wiki Lijiao Liu 2f20d942afbb0f391ca9d5e33535adcd66056504 The muon spectrometer 0 191 660 574 2009-08-25T07:15:08Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays primarily in collaboration with high school students and teachers, but master students will also be involved in the upgrade and extension of this system. == General description == To be provided... == More information == * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 55333e0239438c54f78b8054e61cace945533c39 661 660 2009-08-25T07:25:28Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts == General description == To be provided... == More information == * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 460ef893701b17713553e2cb077f18f3a4877f43 662 661 2009-08-25T07:26:21Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: A. Simple measurements with the CRT B. Building of a mini CRT at the high school laboratory == General description == To be provided... == More information == * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 9079f679b3fcac672993b7199897804a68f12776 663 662 2009-08-25T07:27:05Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == General description == To be provided... == More information == * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 7b969a7a3d5f60e87daf1ff6e8392e180f9615e4 664 663 2009-08-25T07:28:13Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == General description == To be provided... == More information == * Heidi's talk for TOF teachers 2009: * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 4f82d0bc2fa4d83371fc94e73aadb4c37c35b338 665 664 2009-08-25T07:30:44Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == The Cosmic Ray Telescope == To be provided... == High School Project == Plans for building a mini CRT CRT Measurements at IFT == More information == * Heidi's talk for TOF teachers 2009: to be added * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 7a5eaf207402a35949978c70266d67210a233506 666 665 2009-08-25T07:31:56Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == The Cosmic Ray Telescope == General description Possible Measurements Upgrade work Master thesis == High School Project == Plans for building a mini CRT CRT Measurements at IFT == More information == * Heidi's talk for TOF teachers 2009: to be added * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ ac26bf71894b9346d9ae4a149465fa19f6af9e37 667 666 2009-08-25T07:32:27Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == The Cosmic Ray Telescope == General description Possible Measurements Upgrade work Master thesis == High School Project == Plans for building a mini CRT CRT Measurements at IFT == More information == * Heidi's talk for TOF teachers 2009: to be added * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ 6f3937e74061dd56340bee8d945b7823798ae09f 674 667 2009-08-28T08:57:35Z Dfe002 7 /* More information */ wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == The Cosmic Ray Telescope == General description Possible Measurements Upgrade work Master thesis == High School Project == Plans for building a mini CRT CRT Measurements at IFT == More information == * Heidi's talk for TOF teachers 2009: to be added * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ * The original design report of the KTH cosmic ray project: http://www.particle.kth.se/SEASA/project.pdf * The cosmic ray telescope, a portable detector from the KTH: http://www.particle.kth.se/%7Epearce/CRT * The last link "Measuring the muon lifetime" (http://www.particle.kth.se/%7Epearce/muonlab) describes something we have prepared for in Bergen too. We have (most of) the material to build the intermediate layer, and a ready cut aluminium 1m^2 plate. This is part of the 'future work' for our CRT (in addition to the GPS-option). The construction is very simple, but more time will be needed on the analysis software development to have this implemented. 9c03b9d284b1d68b7b52e8bd0cc9ed1e42585273 File:Adc-simple.png 6 207 671 2009-08-27T08:47:03Z St12151 15 Simple labview setup for reading out data from CAEN adc. wikitext text/x-wiki Simple labview setup for reading out data from CAEN adc. 6b996e4921cacbbfb117f38b37b78a05c604b41c Labview readout setup 0 208 675 2009-08-28T12:02:35Z St12151 15 Created page with '== LabVIEW programs for detector-lab instruments == Several subVIs has been made to ease the use of instruments avaliable in the lab. Larger VIs then use these subVIs to set up a...' wikitext text/x-wiki == LabVIEW programs for detector-lab instruments == Several subVIs has been made to ease the use of instruments avaliable in the lab. Larger VIs then use these subVIs to set up a complete test-system that can control, monitor and capture data from experiments. == SubVIs == The following subVIs has been made for the CAEN ADC. In addition the VIs provided by CAEN for the PCI-link bridge is needed to use these. === CAEN ADC === After the CAENVME_INIT subVI has been started (parameters "1,0,0"), a handle to the PCI-bridge is given. This handle is used by all subsequent VIs to communicate with the ADC. For further information refer to the technical documents for the ADC. * ''''ADC_Reset'''' Resets the adc, stops data acqusition. * ''''ADC_setMode'''' Set bitdepth, enable interrupt and auto-start acqusition after readout. * ''''ADC_setTriggerMode'''' Sets internal/external/random trigger signal and edge. * ''''ADC_setPostTrig'''' Sets the window position in relation to the trigger (0-127, 64 equals trigger in centre). * ''''ADC_setTriggers'''' Enables the triggers, and sets the threshold voltage [-1, 1]V. * ''''ADC_StartAcqusition'''' Starts capturing data, needs only to be run once if ''auto restart AC'' is enabled in ADC_setMode. * ''''ADC_waitForInterrupt'''' Use this to pause loop until data is captured. Needs CAENVME_IRQEnable and interrupt enabled in ADC_setMode. * ''''ADC_readRAM * ''''Global_Settings'''' Global constants like ADC address and other shared variables are stored here. [[File:Adc-simple.png]] dc9a47fa92a8ce7c90efe052a35c3743b9dccc86 Lab Equipment 0 111 676 497 2009-08-28T13:55:33Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes |- |TTi EL155 |15V, 5A linear DC power supply | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 60f552d7ab9c05032f9258eceb386a37aef7ebc5 677 676 2009-08-28T14:08:10Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O ! |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |Optics department |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 | |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] |- |National Instruments VME-MXI-2 |VME controller | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} bd5ec8dbd11079695c56d0b37598bc17a8463096 678 677 2009-08-28T14:09:41Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |Optics department |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 | |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] | |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 5f072dd36132805a9a72c529a491af89cef9d5cb 679 678 2009-08-28T14:11:05Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |Optics department |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | | |- |TTi EL302D |30V, 2A dual linear DC power supply | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] | |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 | |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 02ecd9d56f9d170e2d3a0989fe70035019c5f629 Material 0 197 681 636 2009-09-01T08:51:20Z Dfe002 7 wikitext text/x-wiki Some material for presentations should go here. Plots can be discussed during next meeting. Thesis: 4bc4bdf8786ba3a259e2cf20206df05d367b7226 683 681 2009-09-01T09:14:17Z Her065 20 wikitext text/x-wiki Some material for presentations should go here. Plots can be discussed during next meeting. Thesis: *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Characerization of Multipixel Avalanche Photodiodes, Spring 2009] 5cdf955e021a94579dbbe61dbc5d8c2e2f2b495f 684 683 2009-09-01T09:14:53Z Her065 20 wikitext text/x-wiki Some material for presentations should go here. Plots can be discussed during next meeting. Thesis: *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characerization of Multipixel Avalanche Photodiodes, Spring 2009] 07d96bd67e6b24ecc589317a4844238952124784 685 684 2009-09-01T09:15:17Z Her065 20 wikitext text/x-wiki Some material for presentations should go here. Plots can be discussed during next meeting. Thesis: *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] 05bc6a68ad7ac70b6f1d4e5e71e3104460f06e22 696 685 2009-09-01T12:56:19Z Her065 20 wikitext text/x-wiki Some material for presentations should go here. Plots can be discussed during next meeting. 8503982c8bb090370f08cfdbcf3e8790bb538505 File:Characterization of Multipixel Avalanche Photodiodes.pdf 6 209 682 2009-09-01T09:00:01Z Her065 20 Masterthesis Hege Austrheim Erdal Title: Characterization of Multipixel Avalanche Photodiodes wikitext text/x-wiki Masterthesis Hege Austrheim Erdal Title: Characterization of Multipixel Avalanche Photodiodes a714de662cf81e2ebdc02fe2519db8780d41638a File:Hege Masterpresentation.pdf 6 210 686 2009-09-01T09:24:28Z Her065 20 Hege's masterpresentation, 24th of June 2009 wikitext text/x-wiki Hege's masterpresentation, 24th of June 2009 8c10a682d66e9ed489df7c6541a43dbdc9abfbd8 Detector lab 0 21 687 635 2009-09-01T09:26:06Z Her065 20 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results 03.02.09] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. 1c1ce6b6e7278037f9142c3c486529e62c98bb0f 691 687 2009-09-01T12:16:43Z Her065 20 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009 - Meeting: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. 1bb3b4c2161deaa49b568b6ab51d3d01d210d4a8 694 691 2009-09-01T12:53:59Z Her065 20 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 3.2.2009 - Meeting: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. 0917cada3e39bea9075e8437be60696169c30add Documentation-list 0 211 695 2009-09-01T12:56:16Z Her065 20 Created page with '==Articles== Will be added later ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Charac...' wikitext text/x-wiki ==Articles== Will be added later ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] 1124117e653b72154d2bc377630f567dc2b5e339 700 695 2009-09-02T07:13:03Z Her065 20 wikitext text/x-wiki ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designsnext term of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations] '''SiPMs''' *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications] c9548cf889213e6b052ec5609c0f4affbe17c108 Documentation-list 0 211 701 700 2009-09-02T07:19:03Z Her065 20 wikitext text/x-wiki ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designsnext term of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies) ] e4bba5b06160b45ca51b8e4d4906462bc34ab31d 702 701 2009-09-02T07:33:17Z Her065 20 wikitext text/x-wiki ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designsnext term of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET ] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies) ] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics] 51310889974a74d9c9cb64d22d463ee94cb5f293 703 702 2009-09-02T07:44:14Z Her065 20 wikitext text/x-wiki ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designsnext term of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET ] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies) ] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics] '''General about the photodetectors''' *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection] 9d5c4e3b1538b9ae709160765156b88ab6ad90f0 704 703 2009-09-02T07:58:23Z Her065 20 wikitext text/x-wiki ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout] *[ '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET ] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies) ] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter] fa2121fde4b36568774e7d75ab76a66001e6efc3 705 704 2009-09-02T08:24:41Z Her065 20 wikitext text/x-wiki ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET ] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies) ] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] fb27bfa80a4581dce186d5eaf4e8c67a3b3fcc9c 706 705 2009-09-02T08:34:23Z Her065 20 wikitext text/x-wiki Feel free to add thesis/articles! ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout, 2008] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier, 2001] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems, 2009] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation, 2004] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies), 2009] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics, 2007] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging, 2002] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection, 1996] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter, 2008] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] 1ca432d71d54abb240867b6938d59ec7dbbb8fef 707 706 2009-09-02T08:59:22Z Her065 20 wikitext text/x-wiki Feel free to add thesis/articles! ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout, 2008] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier, 2001] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems, 2009] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation, 2004] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies), 2009] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics, 2007] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging, 2002] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection, 1996] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter, 2008] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] '''PET''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1239645&isnumber=27794 Advantages of improved timing accuracy in PET cameras using LSO scintillator, 2002] *[http://www.iop.org/EJ/article/0031-9155/50/19/006/1.pdf First experimental results of time-of-flight reconstruction on an LSO PET scanner, 2005] *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=775565&isnumber=16852 Prospects for time-of-flight PET using LSO scintillator, 1999] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4P2S8W2-9-3&_cdi=5314&_user=107896&_orig=search&_coverDate=10%2F01%2F2007&_sk=994199997&view=c&wchp=dGLbVlz-zSkzk&md5=b4f9d0ef3f0dfb31a54c6c8dba480178&ie=/sdarticle.pdf Recent advances and future advances in time-of-flight PET, 2007] 91406d3c8537720831163e1026ab82e87285e3be Coming to CERN 0 203 708 698 2009-09-02T12:23:58Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled Cern contract or Cern short term contract ** Short-term: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf ** Normal contract: http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == -[http://housing-service.web.cern.ch/housing-service/hostelwelc.html Cern hostel]. If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. *Hint: If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended - as above. -St.Genis- (Lies between CERN and ALICE) * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] -Between CERN and Geneve- * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to Cern == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at Cern == * Go to the [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 Users office] to get your contract fixed, afterwards you get your key card from [http://building.web.cern.ch/map/building?bno=55 the registration office]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secreteriat]''' [http://building.web.cern.ch/map/building?bno=301 Map] Go here for *key to the Bergen Office (if you want this) *CERN drivings licence, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course level 1+2, see below. When the secreteriate have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the [http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * [https://alicesms.cern.ch/ Book your shifts] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the [https://alice-logbook.cern.ch ALICE logbook], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 1 September 2009 (UTC) b6aaf207dbc8e05be038151b1bc6d057ebdc3a48 709 708 2009-09-02T12:33:33Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf Short-term] ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at CERN == * Go to the [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 Users office] to get your contract fixed, afterwards you get your key card from [http://building.web.cern.ch/map/building?bno=55 the registration office]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this) *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. == ALICE shiftwork == * Have a look into the [http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 1 September 2009 (UTC) f82c27b40ce5ed6dbc7aaf2a4bc933a7016e793c 715 709 2009-09-05T10:02:08Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf Short-term] ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at CERN == * Go to the [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 Users office] to get your contract fixed, afterwards you get your key card from [http://building.web.cern.ch/map/building?bno=55 the registration office]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this) *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. == ALICE shiftwork == * Have a look into the [http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 5 September 2009 (UTC) 42b869af018286e33f5d811b1f07ef8c50f931f8 726 715 2009-09-11T13:24:24Z Her065 20 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/ShortTermE.pdf Short-term]- NB! when the short-term contract expires, you have to hand in your CERN card at the end of your stay. In addition, the CERN account will be closed, normally within 1 month. If you want to have your CERN account (that includes your CERN-mail etc), you can extend the account by filling in a form for external participation. In any case, the CERN card have to be handed in, weekdays: Registration office (where you got it in the first place, see below) or to the guards at the main entrance. ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/UsersContractsInfo/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this) *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. == ALICE shiftwork == * Have a look into the [http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 5 September 2009 (UTC) 9b28caae040814c81a2b83633f99bfbe7d1db3d0 Particle Physics group 0 137 710 434 2009-09-02T13:16:49Z Mug004 27 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] === [[GroupSeminars|Group Seminars]] === === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] acfbe215348d399acf36d19b4dcac4c54146212d 711 710 2009-09-02T13:30:07Z Mug004 27 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 070327923e0b7cef9b562ae4738474f37797b30c 736 711 2009-09-22T11:13:52Z St11874 25 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 3b7968e9039bbcb689b6755981826797066fc43e 744 736 2009-09-22T15:15:21Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 4640a75050369e02da40bf4eb884a26c24ae6d88 764 744 2009-10-01T12:15:05Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 4133d3e868fc9b3636f97585964fdf1de58cc73e Detector lab 0 21 712 694 2009-09-03T11:15:05Z Dfe002 7 /* Recent talks */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. b820293ff0a9c7b306c1338eca35d0d01fe3d363 713 712 2009-09-03T11:15:29Z Dfe002 7 /* Lab Equipment */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. be4dd6ba9ffb0eef1eb55ed1fb96a5c6f14b3bd1 728 713 2009-09-16T15:51:52Z Hsa061 18 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/d/d6/ Jostein: PET presentation] [[older presentations]] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. be7dd8ebd6d6e145f205c77e9b367897917284ba 729 728 2009-09-16T15:52:35Z Hsa061 18 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/d/d6/ Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. 97ac9ba2f23ccb1b00a0c3473b6aa0f5bddf3c18 Older presentations 0 212 714 2009-09-03T11:15:38Z Dfe002 7 Created page with '3.2.2009 - Meeting: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/ima...' wikitext text/x-wiki 3.2.2009 - Meeting: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results] bce7097c35d0dc8185b196a8185042474e13bc45 PHYS222 0 202 716 670 2009-09-08T06:59:13Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] dada19097a413e8d82eaea0b160f577b7250036b 727 716 2009-09-14T09:14:36Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] 2d4e96db4972e14d73aaf606df9116c3a48e616f 732 727 2009-09-22T09:51:47Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] == Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] da1c4dafb473135c19f53df406eec0b342ee19fb 735 732 2009-09-22T09:53:29Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[Category:Mikroelektronikk]] c9b56432b709d62e26c75f094f5e8a58dad3dca1 755 735 2009-09-28T13:36:30Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[ Eksempler/Oppgaver ]] [[Category:Mikroelektronikk]] b6bbd0bf8b9c010ca8e8fe506b3eec85d453b9a3 756 755 2009-09-28T13:36:45Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] === Kretssimulering === AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] [[ Eksempler/Oppgaver ]] [[Category:Mikroelektronikk]] ecc350b4c8412009c8efb5473289b98dd056ccd1 759 756 2009-09-29T08:54:55Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [[http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV]] [[Category:Mikroelektronikk]] 4fc21a76f7e27f9aa82af2b8b8b1633e80cc6fdd File:Rikard Bolgen - Master Thesis.pdf 6 213 717 2009-09-09T08:48:15Z Dfe002 7 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Busy Box and related 0 3 719 548 2009-09-09T08:49:29Z Dfe002 7 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === [[How to run the RCU - DRORC - Busybox setup]] === === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[https://wikihost.uib.no/ift/images/9/95/Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Rikard Bolgen, Busybix User Guide]] <br> [[https://wikihost.uib.no/ift/images/b/bb/Rikard_Bolgen_-_Master_Thesis.pdf|Master Thesis, Rikard Bolgen]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 18636540797d13c566f45ff6010a477d6d01c45b 720 719 2009-09-09T08:50:31Z Dfe002 7 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === [[How to run the RCU - DRORC - Busybox setup]] === === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Rikard Bolgen, Busybix User Guide]] <br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bolgen]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 243fd7761004d3fc3ce732b0c34509ee00fa352d 721 720 2009-09-09T08:51:08Z Dfe002 7 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === [[How to run the RCU - DRORC - Busybox setup]] === === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Version 1.01: '''</li> </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] <br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 4a00793cbb1bcdb08afab45202dd594829e9992b ATLASTutorials 0 160 722 422 2009-09-09T13:44:46Z Tbu082 19 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[Software workshop, 09/09-09]] == Upcoming tutorials == == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] 1333e028bd7efe82fccdad0795977a29516c3fe6 Software workshop, 09/09-09 0 215 723 2009-09-09T13:45:47Z Tbu082 19 Created page with 'The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == [[File:SoftwareWorkshop090909.pdf]]' wikitext text/x-wiki The meeting will take place in Bjarnes office at IFT Marc 19, 2009 at 12:30, and also on EVO (see below) == Presentation == [[File:SoftwareWorkshop090909.pdf]] b1268afd15d7ecfb8599bf13bbad4838555b9411 725 723 2009-09-09T13:47:32Z Tbu082 19 wikitext text/x-wiki The meeting took place in IFT room 316 09/09-09 @ 14.00 == Presentation == [[File:SoftwareWorkshop090909.pdf]] 9c9da27682d9af996f1d788dc3816b38523a6b22 File:SoftwareWorkshop090909.pdf 6 216 724 2009-09-09T13:46:02Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Symbolsk løsning av nodeligninger med Matlab 0 217 733 2009-09-22T09:52:13Z Nfyku 4 Created page with '% Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Kjetil Ullaland, 10. september 1996 ligning1='(Vout-Vgs)/Zc+gm*Vgs+...' wikitext text/x-wiki % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Kjetil Ullaland, 10. september 1996 ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0'; ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0'; ligning1=subs(ligning1,'1/(j*w*C)','Zc'); ligning2=subs(ligning2,'1/(j*w*C)','Zc'); pretty(ligning1); pretty(ligning2); Vgs_solved=simplify(solve(ligning2,'Vgs')) pretty(Vgs_solved) ligning3=subs(ligning1,Vgs_solved,'Vgs'); Vout_solved=simplify(solve(ligning3,'Vout')) pretty(Vout_solved) c904b4642d1bc5dcb42fe4923c983a12bbd4e5e6 734 733 2009-09-22T09:52:55Z Nfyku 4 wikitext text/x-wiki <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Kjetil Ullaland, 10. september 1996 ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0'; ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0'; ligning1=subs(ligning1,'1/(j*w*C)','Zc'); ligning2=subs(ligning2,'1/(j*w*C)','Zc'); pretty(ligning1); pretty(ligning2); Vgs_solved=simplify(solve(ligning2,'Vgs')) pretty(Vgs_solved) ligning3=subs(ligning1,Vgs_solved,'Vgs'); Vout_solved=simplify(solve(ligning3,'Vout')) pretty(Vout_solved) </pre> 9cdcddbabdab9515d1e20451daab2f60b133a7d8 Main Page 0 1 751 459 2009-09-25T09:12:18Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 68166c48bdaea44d6eed6e617075e6cea17123a6 Tips and tricks 0 221 753 2009-09-25T09:18:20Z Nfyku 4 Created page with '== Nyttige ting == Her skal me samla alle dei små tinga me veit og dei tinga me ikkje visste at me kunne og dei tinga du ikkje visste naboen din ikkje visste du kunne. F.eks k...' wikitext text/x-wiki == Nyttige ting == Her skal me samla alle dei små tinga me veit og dei tinga me ikkje visste at me kunne og dei tinga du ikkje visste naboen din ikkje visste du kunne. F.eks korleis sette opp [[thunderbird]] som epostlesar [[Mal for PhD]] [[Mal for Master]] Nyttige [[nettsider]] [[LINUX]] tips og triks Info om [[printing]] [[Norske bokstaver i Latex]] Lagringsplassen vår på [[/Data/ift/ift_romfys1/]] I forbindelse med IPY-plakaten, ble det laget en enkel [[magnetosfærefigur]], som kan være fin å bruke i oppgaver (vektorgrafikk) Om romfysikk sine [[websider]] Hvordan få [[Fuview]] til å virke [[Category:Space physics]] 5df9cbd132ab3ae153c8c0b87d01b52f6da9cb08 The ASIM project 0 222 754 2009-09-25T09:21:00Z Nfyku 4 Created page with '== ASIM - Atmosphere Space Interaction Monitor == ASIM is an experiment for the International Space Station (ISS) external facilities on the Columbus module. ASIM is aimed at th...' wikitext text/x-wiki == ASIM - Atmosphere Space Interaction Monitor == ASIM is an experiment for the International Space Station (ISS) external facilities on the Columbus module. ASIM is aimed at the study of high-altitude optical emissions from the stratosphere and mesosphere, the Transient Luminous Events (TLEs: Red Sprites, Blue Jets, Elves) and the Terrestrial Gamma Flashes (TGFs) (Neubert et al., 2006). ASIM has been through a Phase-A (Development and Design, 2004-2005) and a Phase-B (Breadboard and Feasibility, 2007-2009) study. In May 2009 the Program Board for Human Spaceflight and Exploration (PB-HME) decided that the ASIM payload shall be part of the ELIPS-3 program and allocated funding to ASIM from the program. A flight model of the ASIM payload will be built through Phase C/D starting early 2010. ---- [[Category:Space physics]] 1e2456b0547e02a3363b75063a69413413961aab Eksempler/Oppgaver 0 223 757 2009-09-28T13:42:02Z Nfyku 4 Created page with '== Øvingsoppgaver == === Problem 3.4 from Gray et.al. === For the common-source amplifier of Fig 3.12, calculate the small-signal voltage gain and the bias values of Vi and Vo ...' wikitext text/x-wiki == Øvingsoppgaver == === Problem 3.4 from Gray et.al. === For the common-source amplifier of Fig 3.12, calculate the small-signal voltage gain and the bias values of Vi and Vo where the small-signal voltage gain is unity with the transistor operating in the active region. [[Spice deck]] [[Category:Mikroelektronikk]] e9bf226c6ef129734bd8d9adb2720e1cd26240d1 Spice deck 0 224 758 2009-09-28T13:42:53Z Nfyku 4 Created page with '<pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage ...' wikitext text/x-wiki <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD VSS 3 * Transistor * Drain Gate Source Bulk MN1 Out In VSS VSS nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out VSS 0.1p * Voltage source * from to volts VI In VSS DC 1.281 AC 1 * * Models * .model nmos nmos level=1 VT0=0.6 KP=200u LAMBDA=0 * * Setup * .options nomod nopage .width OUT=80 .connect vss 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] 713349e199274f95bcc93909ca6b47a0110e8fa5 760 758 2009-09-29T08:57:24Z Nfyku 4 wikitext text/x-wiki <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD VSS 3 * Transistor * Drain Gate Source Bulk MN1 Out In VSS VSS nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out VSS 0.1p * Voltage source * from to volts VI In VSS DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0.2 + TOX=10e-9 PHI=0.93 GAMMA=0.6 + CJ=9.8E-5 PB=0.72 MJ=0.36 + CJSW=2.2E-10 MJSW=0.1) * * Setup * .options nomod nopage .width OUT=80 .connect vss 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] bc99acd0c71655ef6f781b8d67d8e9e88d3a86be The muon spectrometer 0 191 761 674 2009-10-01T08:31:38Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == The Cosmic Ray Telescope == General description Possible Measurements Upgrade work Master thesis == High School Project == Prinsippet for Kosmisk Stråle Teleskop (CRT) ---- To lag av scintillatorer ligger over hverandre så når en kosmisk stråle passerer så gir det et signal i begge scintillatorene. Plan for å bygge et mini-CRT ---- Materialer og kostnader ---- CRT Målinger ved IFT ---- == More information == * Heidi's talk for TOF teachers 2009: to be added * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ * The original design report of the KTH cosmic ray project: http://www.particle.kth.se/SEASA/project.pdf * The cosmic ray telescope, a portable detector from the KTH: http://www.particle.kth.se/%7Epearce/CRT * The last link "Measuring the muon lifetime" (http://www.particle.kth.se/%7Epearce/muonlab) describes something we have prepared for in Bergen too. We have (most of) the material to build the intermediate layer, and a ready cut aluminium 1m^2 plate. This is part of the 'future work' for our CRT (in addition to the GPS-option). The construction is very simple, but more time will be needed on the analysis software development to have this implemented. d98bd8de2cca29bb29623d2fcb8854ca3dd4441c 762 761 2009-10-01T08:37:09Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == The Cosmic Ray Telescope == General description Possible Measurements Upgrade work Master thesis == High School Project == Prinsippet bak et Kosmisk Stråle Teleskop (CRT) ---- To lag av scintillatorer ligger over hverandre så når en kosmisk stråle passerer så gir det et signal i begge scintillatorene. Hver av scintillatorene er koblet til et photomulitplikator rør som sender det registrerte signalet til et elektronikk kort. Elektronikk kortet kan ha en teller som Plan for å bygge et mini-CRT ---- Materialer og kostnader ---- 2 Scintillatorer 2 PM rør 1 elektronikk kort (lages i sammarbeid med UiB) 1 kasse med holdere for scintillatorene Ledninger Så skolens utgifter er til de 2 PM rørene og eventuelt scintillatorene hvis ikke vi kan bidra med det fra UiB. CRT Målinger ved IFT ---- == More information == * Heidi's talk for TOF teachers 2009: to be added * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ * The original design report of the KTH cosmic ray project: http://www.particle.kth.se/SEASA/project.pdf * The cosmic ray telescope, a portable detector from the KTH: http://www.particle.kth.se/%7Epearce/CRT * The last link "Measuring the muon lifetime" (http://www.particle.kth.se/%7Epearce/muonlab) describes something we have prepared for in Bergen too. We have (most of) the material to build the intermediate layer, and a ready cut aluminium 1m^2 plate. This is part of the 'future work' for our CRT (in addition to the GPS-option). The construction is very simple, but more time will be needed on the analysis software development to have this implemented. 57a7350a73954e9842265ef5e13735e449c8632c 763 762 2009-10-01T08:38:27Z Hsa061 18 wikitext text/x-wiki == Concept == At the subatomic research group we have a muon spectrometer to be used for measurements of cosmic rays. The Cosmic Ray Telescope (CRT) is a scintillator detector of a total area of 4 m2 which is designed and constructed to register muons that originate from the decay of mesons created by primary cosmic radiation. The CRT is primarliy designed and commissioned to be used in exercises for undergraduate students and for high school students. The setup will also provide master student project to upgrade and extend this system and to do more advanced cosmic ray studies. During 2009 our plans are to define a high school project associated with our muon spectrometer. It will consist of two parts: * Simple measurements with the CRT * Building of a mini CRT at the high school laboratory == The Cosmic Ray Telescope == General description Possible Measurements Upgrade work Master thesis == High School Project == '''Prinsippet bak et Kosmisk Stråle Teleskop (CRT)''' ---- To lag av scintillatorer ligger over hverandre så når en kosmisk stråle passerer så gir det et signal i begge scintillatorene. Hver av scintillatorene er koblet til et photomulitplikator rør som sender det registrerte signalet til et elektronikk kort. Elektronikk kortet kan ha en teller som '''Plan for å bygge et mini-CRT''' ---- '''Materialer og kostnader''' ---- * 2 Scintillatorer * 2 PM rør * 1 elektronikk kort (lages i sammarbeid med UiB) * 1 kasse med holdere for scintillatorene * Ledninger Så skolens utgifter er til de 2 PM rørene og eventuelt scintillatorene hvis ikke vi kan bidra med det fra UiB. CRT Målinger ved IFT ---- == More information == * Heidi's talk for TOF teachers 2009: to be added * Øyvind's thesis which gives a good description of our setup: http://web.ift.uib.no/~lipniack/theses/oyvind_satre_muon_telescope.pdf * KTH has an overview of their cosmic ray project on http://www.particle.kth.se/SEASA/ * The original design report of the KTH cosmic ray project: http://www.particle.kth.se/SEASA/project.pdf * The cosmic ray telescope, a portable detector from the KTH: http://www.particle.kth.se/%7Epearce/CRT * The last link "Measuring the muon lifetime" (http://www.particle.kth.se/%7Epearce/muonlab) describes something we have prepared for in Bergen too. We have (most of) the material to build the intermediate layer, and a ready cut aluminium 1m^2 plate. This is part of the 'future work' for our CRT (in addition to the GPS-option). The construction is very simple, but more time will be needed on the analysis software development to have this implemented. 7bae30c0dc7fff39fdda4e16402ad3048e6ef3fe HEPOutreach 0 225 765 2009-10-01T12:15:35Z Tbu082 19 Created page with '== ATLAS outreach ==' wikitext text/x-wiki == ATLAS outreach == 70b0156a44d74f147af362769b9123b2822dba2e 766 765 2009-10-01T12:16:10Z Tbu082 19 wikitext text/x-wiki == ATLAS outreach == === Talks === === Images === 2057dbb4784db4363c61fccf6bf1c35193b1e07f 767 766 2009-10-01T12:16:25Z Tbu082 19 wikitext text/x-wiki == ATLAS outreach == === Talks === === Images === === Links === 8a7822700f05cb630d09da1d418f491af49044b0 User:Khe002 2 226 768 2009-10-02T09:41:10Z Tbu082 19 Created page with '=== Kristine Helle ===' wikitext text/x-wiki === Kristine Helle === 06737329af916661b36bfe630d6fd7a85e228775 User:Jsa038 2 227 770 2009-10-06T09:56:26Z Dfe002 7 Created page with 'Jostein Sæterstøl' wikitext text/x-wiki Jostein Sæterstøl 0d4ca00de89a3e31efe26f6df598bbad95fba95c File:PET-presentasjon-Detectorlab english.pdf 6 228 771 2009-10-06T10:04:35Z Jsa038 34 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Detector lab 0 21 772 729 2009-10-06T10:05:39Z Jsa038 34 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. 8e6ff2f8c6a7c609fd47c6191c421c57c2ff7eda ParticlePhysicsGroupMeetings 0 139 773 451 2009-10-06T10:12:29Z Hsa061 18 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster - Thomas * Susy tau poster - Alex & Therese * Monitoring poster - Arshak * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 3d49db7c92e2b95cf112cd71e9424575db9a2cb7 774 773 2009-10-06T10:15:38Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster [landscape, a0] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 fbedbf91db21d1409f3fd13ca2079a79fb0ea546 775 774 2009-10-06T10:16:26Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster [landscape, a0] [[File:[taupairs.pdf]]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 814478c4826e40276b5a753b2ec014f4c4f6d897 776 775 2009-10-06T10:16:51Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [File:[taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 fed9a1af27f7188c9b124b25586b8429bd2a7613 777 776 2009-10-06T10:17:04Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) taupairs.pdf - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 5cade800b6f383123a4c84de4fb860224cf23ccd 778 777 2009-10-06T10:17:17Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 d373f49f93b061213647b4e9294d09617075700a 780 778 2009-10-06T10:19:05Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf|taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 96eaa4e539fb7706112b9b77201435ca07bfad19 781 780 2009-10-06T10:20:44Z Ato061 22 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf|taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 1bf46f287e5768878258983a04627cfcb930fa27 782 781 2009-10-06T10:22:43Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] * BSF poster - Heidi * Outreach poster (optional) [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 16e106b007e43fd27eb15c43e66120600ed8e983 783 782 2009-10-06T10:28:38Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- Alex & Therese * Monitoring poster - Arshak [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] * BSF poster - Heidi * Outreach poster (optional) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 42d0dbf1547b50500fd83da47f90571afc5c5cea 786 783 2009-10-06T11:08:25Z St11874 25 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster - Arshak [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] * BSF poster - Heidi * Outreach poster (optional) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 51e4b3b9db471facad0578b692960f82c7677ea2 790 786 2009-10-06T11:49:11Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster - Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster - Arshak [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] (+computer slide show) * BSF poster - Heidi * Outreach poster (optional) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 a71bc6806fb73dc326c315a27eb7bc6ee11a842d 791 790 2009-10-06T11:53:58Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster [[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster - Arshak [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] (+computer slide show) * BSF poster - Heidi * Outreach poster (optional) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 3dfd1c49374fa6d9155a73ff563c4a98ce3254e8 793 791 2009-10-06T11:55:05Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster (portrait, a0)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, a0) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster [landscape, a0]- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster - Arshak [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] (+computer slide show) * BSF poster - Heidi * Outreach poster (optional) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 e0045b8d1bbf28d03954a6190f35295d0aa3ccfc 794 793 2009-10-06T11:56:33Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == Review - Posters: * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi * Outreach poster (optional) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 2ec1d03856739ac6655d5c44edecea206594b6e6 795 794 2009-10-06T11:59:05Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == === Review - October 9 2009 - Posters === All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi * Outreach poster (optional) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 4b10c0d1e3164cf4f0de06a9fd5b6ed102b0c410 796 795 2009-10-06T12:05:59Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == === Review - October 9 2009 - Posters === All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional print at CERN) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 ebe2975e7909de7c174382496347adf4390ac7d6 797 796 2009-10-06T12:06:52Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == === Review - October 9 2009 - Posters === All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional, portrait, print at CERN) Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 4803edcbb49eae281a01bfabc6506fb1a7229980 807 797 2009-10-06T21:48:52Z Hsa061 18 wikitext text/x-wiki == Particle Physics Group Meetings == === Review - October 9 2009 - Posters === All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional, portrait, print at CERN) * 3D poster (for the laboratory)[[File:3D.pdf] Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 459d0821a76d5a0f953701ae4f8e7cfe0b41631a 811 807 2009-10-07T10:02:31Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == [[October 9 2009 review - poster session]] === Review - October 9 2009 - Posters === All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional, portrait, print at CERN) * 3D poster (for the laboratory)[[File:3D.pdf] Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 --- [[Shifts/OTP/fimm group meeting May 5, 2009]] [[SUSY/Tau analysis meeting March 12, 2009]] [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 62b8bf3351533b33723de8ba54592f04e4df5289 813 811 2009-10-07T10:03:18Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 30db45a7a336724d8177794293e23d4e30cfc9e2 814 813 2009-10-07T10:03:49Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 [[ParticlePhysicsGroupMeetings|Back to meeting page]] 63eef46d2afa8b4ef17cec74158d35188cd856f1 815 814 2009-10-07T10:04:40Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 488ad42dd02edf9404d7a79eed82641fa60f6072 File:Taupairs.pdf 6 229 779 2009-10-06T10:18:30Z Tbu082 19 Studies of Tau Pairs. Poster for review session, 9 oct 2009. wikitext text/x-wiki Studies of Tau Pairs. Poster for review session, 9 oct 2009. 45c93ec329271b463296061b0203fdf7e3b9796a 788 779 2009-10-06T11:40:28Z Tbu082 19 uploaded a new version of "[[File:Taupairs.pdf]]": Review of ATLAS Tau Pair Analysis oct 9 2009. Minor changes wikitext text/x-wiki Studies of Tau Pairs. Poster for review session, 9 oct 2009. 45c93ec329271b463296061b0203fdf7e3b9796a 805 788 2009-10-06T15:49:26Z Tbu082 19 uploaded a new version of "[[File:Taupairs.pdf]]": Some changes to tau<->mu text wikitext text/x-wiki Studies of Tau Pairs. Poster for review session, 9 oct 2009. 45c93ec329271b463296061b0203fdf7e3b9796a 806 805 2009-10-06T15:50:45Z Tbu082 19 uploaded a new version of "[[File:Taupairs.pdf]]": Fixed tau<->mu text wikitext text/x-wiki Studies of Tau Pairs. Poster for review session, 9 oct 2009. 45c93ec329271b463296061b0203fdf7e3b9796a File:SUSY with tau oster.pdf 6 230 785 2009-10-06T11:07:04Z St11874 25 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:SUSY with tau poster.pdf 6 231 787 2009-10-06T11:09:23Z St11874 25 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 810 787 2009-10-07T09:50:32Z Tbu082 19 uploaded a new version of "[[File:SUSY with tau poster.pdf]]": Final version wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Particle Physics group 0 137 789 764 2009-10-06T11:48:28Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] aa3ac2eed4025c17861fa4f4409758e2d19580c0 801 789 2009-10-06T13:50:54Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] b3307a3ec0c7c1b295965193e66974c922652b81 File:Poster-osland.pdf 6 232 792 2009-10-06T11:54:28Z Tbu082 19 Theory poster for review 9 oct 2009 wikitext text/x-wiki Theory poster for review 9 oct 2009 e584676ca7ea62a589800242b7da31c79b807898 User:St09909 2 233 798 2009-10-06T12:10:16Z Dfe002 7 Created page with 'Magne Munkejord' wikitext text/x-wiki Magne Munkejord 99ab59445525b161154ac3e2bf4f21e3b4b39c9f ATLASThesesNotes 0 234 802 2009-10-06T13:51:28Z Tbu082 19 Created page with '== Theses, Notes, Publications, ... == === Master theses === * Kent-Olav Skjei -' wikitext text/x-wiki == Theses, Notes, Publications, ... == === Master theses === * Kent-Olav Skjei - 90a03da77495182d29115b07a6fde2a0810846c1 803 802 2009-10-06T13:54:21Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets [[File:Kent-Olav_Skjei-Thesis.pdf]] c08870506c455d48de04584b5cbbaa24438587dd File:Kent-Olav Skjei-Thesis.pdf 6 235 804 2009-10-06T13:54:48Z Tbu082 19 Kent Olav Skjeis Master Thesis wikitext text/x-wiki Kent Olav Skjeis Master Thesis 1a8df758a4bcf68eade3b20ee76c0a431bc383e9 File:3D.pdf 6 236 808 2009-10-06T21:51:27Z Hsa061 18 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Outreach.pdf 6 237 809 2009-10-07T09:15:23Z Hsa061 18 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 October 9 2009 review - poster session 0 238 812 2009-10-07T10:02:41Z Tbu082 19 Created page with 'All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren *...' wikitext text/x-wiki All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional, portrait, print at CERN) * 3D poster (for the laboratory)[[File:3D.pdf] Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 44f0c5826d207fd3ea6b3bb9d70655dde26e8a80 816 812 2009-10-07T10:04:56Z Tbu082 19 wikitext text/x-wiki All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional, portrait, print at CERN) * 3D poster (for the laboratory)[[File:3D.pdf] ---- Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 ---- [[ParticlePhysicsGroupMeetings|Back to meeting page]] 38c5631dae57dcd391661b0bac2cc97d35fa0219 817 816 2009-10-07T10:16:33Z Hsa061 18 wikitext text/x-wiki All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional, portrait, print at CERN)[[File:Outreach.pdf]] * 3D poster (for the laboratory)[[File:3D.pdf] ---- Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 ---- [[ParticlePhysicsGroupMeetings|Back to meeting page]] 0bdc742df4aaaae3358b1f25ee4b4ec63ceca0ab 818 817 2009-10-07T10:16:58Z Hsa061 18 wikitext text/x-wiki All posters are in a0 format. For prints from CERN deadline is lunch 8/8-09. * Theory poster (portrait, print at CERN)[[File:poster-osland.pdf]]- Per * B-physics poster - Maren * Standard Model tau poster (landscape, print at CERN) [[File:taupairs.pdf]] - Thomas (representing Peter, Arshak, Ørjan, Alette, Anna and Bjarne) * Susy tau poster (landscape, print at CERN)- [[File:SUSY_with_tau_poster.pdf]] - Alex & Therese * Monitoring poster (portrait, printed allready) [http://web.ift.uib.no/~tonoyan/CHEP_2009_new.pdf Commissioning of ATLAS reco software] - Arshak (+computer slide show) * BSF poster - Heidi (portrait, print at CERN) * Outreach poster (optional, portrait, print at CERN)[[File:Outreach.pdf]] * 3D poster (for the laboratory)[[File:3D.pdf]] ---- Connect to skype chat for poster session using this link: http://www.skype.com/go/joinpublicchat?skypename=thomas%2eburgess&topic=Posters&blob=lTdzCuO6b3SGwD1Dig__P0VNHCKMVUpi2SCVdtfzs-NFPCfqG1fZjgFbbUxmcvpkH9adx95Ahx3R6LxUvvJ30_2ml-SHkYKRiVK1uOlJgxYa1Havc2O2 ---- [[ParticlePhysicsGroupMeetings|Back to meeting page]] b559ecb95fff03ebb60a11b8598f5b7fb6056b18 Lab Equipment 0 111 819 679 2009-10-08T10:54:02Z Dfe002 7 /* Low Voltage */ wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |Optics department |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | |2x Anja |- |TTi EL302D |30V, 2A dual linear DC power supply | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 | |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} ac4542f36fefa1111491b7431e18320b24e8966b Busy Box and related 0 3 821 721 2009-10-09T14:56:23Z St09909 38 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. === [[How to run the RCU - DRORC - Busybox setup]] === === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Revision 31 : '''</li> [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] <br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 25b35df380198494e0c5ae1cc02fe3bd6002abf6 Wishlist 0 196 822 630 2009-10-12T07:30:05Z Dfe002 7 wikitext text/x-wiki Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find money for it. ==XYZ-table setup== * <s>1µm fiber to scan the detectors.<s> * optical gating grid to calibrate the XYZ-table. [[User:Dfe002|Dominik]] 11:41, 19 August 2009 (UTC) 902783953245942d55a3688b3b7341b7f8034dc2 Wishlist 0 196 823 822 2009-10-12T07:30:17Z Dfe002 7 wikitext text/x-wiki Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find money for it. ==XYZ-table setup== * <s>1µm fiber to scan the detectors.</s> * optical gating grid to calibrate the XYZ-table. [[User:Dfe002|Dominik]] 11:41, 19 August 2009 (UTC) 5dce7131b0b6ffaae6deac9ca937586776e5b20e 824 823 2009-10-12T07:30:37Z Dfe002 7 wikitext text/x-wiki Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find money for it. ==XYZ-table setup== * <s>1µm fiber to scan the detectors.</s> * optical gating grid to calibrate the XYZ-table. [[User:Dfe002|Dominik]] 07:30, 12 October 2009 (UTC) 58797b78cac356f32e85af4ba3323825c6269914 863 824 2009-11-02T09:13:33Z Dfe002 7 wikitext text/x-wiki Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find money for it. ==XYZ-table setup== * <s>1µm fiber to scan the detectors.</s> * optical gating grid to calibrate the XYZ-table. * New camera for the X/Y table [[User:Dfe002|Dominik]] 07:30, 12 October 2009 (UTC) 598f8b2d1c1783e4b9d78a66bfdb190890ecc7f9 Detector lab 0 21 825 772 2009-10-12T07:31:23Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. * [[Retningslinjer for bruk av kapslede kilder ved IFT]] == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 16.-18.09.09: CALICE Collaboration Autumn Meeting, Lyon * 21.-25.09.09: TWEPP 09, Paris, http://twepp09.lal.in2p3.fr/ * 28.9.-2.10.09: IRTG/Forskerskole in Oslo, visit of Sintef * 30.09.-2.10.09: RD09, Florence, http://www.fi.infn.it/conferenze/rd09/ === For internal use === [[material]] that can be used in official presentations. 94912d8cab14b2e5dac1aaa29f6ba04c6fcd4756 827 825 2009-10-12T09:24:26Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Resources == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * Our [http://https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab * Our weekly labmeeting is Tuesdays 11:15 in room 332. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * none at the moment === For internal use === [[material]] that can be used in official presentations. e1c12040091b255069804bfd95b2f4a70f73261c 841 827 2009-10-15T08:52:30Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Resources == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * Our [http://https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab * Our weekly labmeeting is Tuesdays 11:15 in room 332. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 11.12.09: MedViz seminar series - presentation of PET related projects, 1 hour * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 15.02. - 20.02.10: Vienna conference on Instrumentation (http://vci.hephy.at/2010/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany (http://indico.cern.ch/conferenceDisplay.py?confId=62885) === For internal use === [[material]] that can be used in official presentations. 2c4cb9c0990a728cad31fd355b7f3b734c011d86 852 841 2009-10-21T11:31:07Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Resources == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * Our [http://https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab * Our weekly labmeeting is Tuesdays 11:15 in room 332. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 11.12.09: MedViz seminar series - presentation of PET related projects, 1 hour * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 02.01. - 08.01.10: Spåtind meeting on particle physics (http://indico.cern.ch/event/spaatind-2010) * 15.02. - 20.02.10: Vienna conference on Instrumentation (http://vci.hephy.at/2010/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany (http://indico.cern.ch/conferenceDisplay.py?confId=62885) === For internal use === [[material]] that can be used in official presentations. 6da1fca4d776f1f90083e16c04c464a2ccd44de2 872 852 2009-11-03T09:29:54Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Resources == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * Our [http://https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab * Our weekly labmeeting is Tuesdays 11:15 in room 332. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 11.12.09: MedViz seminar series - presentation of PET related projects, 1 hour * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 02.01. - 08.01.10: Spåtind meeting on particle physics (http://indico.cern.ch/event/spaatind-2010) * 15.02. - 20.02.10: Vienna conference on Instrumentation (http://vci.hephy.at/2010/) * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany (http://indico.cern.ch/conferenceDisplay.py?confId=62885) === For internal use === [[material]] that can be used in official presentations. 0110b2ee79bdf8d1a421b71afc282601fc4eeb2d 873 872 2009-11-03T09:36:48Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Resources == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * Our [http://https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab * Our weekly labmeeting is Tuesdays 11:15 in room 332. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 11.12.09: MedViz seminar series - presentation of PET related projects, 1 hour * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 02.01. - 08.01.10: Spåtind meeting on particle physics (http://indico.cern.ch/event/spaatind-2010) * 15.02. - 20.02.10: Vienna conference on Instrumentation - Deadline 16.11.09. (http://vci.hephy.at/2010/) * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany === For internal use === [[material]] that can be used in official presentations. 87fb760ababbbd3e01e01e1ee3dab84a62994892 874 873 2009-11-03T09:44:26Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [http://https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab * Our weekly labmeeting is Tuesdays 11:15 in room 332. == Recent talks == 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 11.12.09: MedViz seminar series - presentation of PET related projects, 1 hour * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 02.01. - 08.01.10: Spåtind meeting on particle physics (http://indico.cern.ch/event/spaatind-2010) * 15.02. - 20.02.10: Vienna conference on Instrumentation - Deadline 16.11.09. (http://vci.hephy.at/2010/) * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany === For internal use === [[material]] that can be used in official presentations. e3fd79fde6bfd1953ffb0ba1b155404da56d2c31 Retningslinjer for bruk av kapslede kilder ved IFT 0 239 826 2009-10-12T07:48:39Z Dfe002 7 Created page with '# Alle flyttbare strålingskilder skal oppbevares i en av instituttets blysafer eller annet spesifisert avskjermet kammer når de ikke er i bruk. # Inn- og utlogg skal føres nå...' wikitext text/x-wiki # Alle flyttbare strålingskilder skal oppbevares i en av instituttets blysafer eller annet spesifisert avskjermet kammer når de ikke er i bruk. # Inn- og utlogg skal føres når kildene tas ut fra lagringsplass for bruk og returneres. # Etter avsluttet bruk skal kildene bringes tilbake til oppbevaringssted så fort som mulig. Ingen kilder skal unødig bli riggende rundt i laboratoriene. Kildene skal fortrinnsvis bringes tilbake til lager ved arbeidstidens slutt. Dersom kilder mad aktivitet under 1MBq skal benyttes flere dager i strekk kan de bli liggende over natten i apparatoppstilling dersom dette ikke kan medføre nevneverdig dosebelastning for personer som skulle oppholde seg i laboratoriet. Stråleområdet merkes i slike tilfeller med propelltape eller skilt, og laboratoriet skal låses når det forlates. # Når kildene er i bruk, så skal det sørges for avskjerming for å unngå unødig dosebelastning. # Dersom de benyttede kildene har en aktivitt over "unntaksgrensen" (1 Mbq for de fleste kilder), må også dosebelastning vurderes. Dette gjøres enklest ved å utføre en måling med Geigerteller som er kalibrert slik at dosebelastning kan avleses direkte (vanligvis i µSv/time). IFT hart en teller som kan utlånes til dette formål. Unntaksgrenser finnes i vedlegg til Strålevernsforskriften. # Hvis bruken av kilder kan gi en dosebelasting some er over 1 mSv/år skal bruker utstyres med dosimeter. Vurdering av antatt årlig dosebelastning foretas av instituttets strålevernskoordinator i samråd med aktuell forskningsgruppe. Dosimeter bestilles ved henvendelse til Margun Solheim. # Det er veileder eller kursleder sitt ansvar å påse at disse retningslinjer blir fulgt når studenter arbeider med strålekilder. Bjarne Stugu er Strålevernskoordinator ved IFT 9440f3cac0bf9cff28b119fec532056a25e98983 Busy Box and related 0 3 828 821 2009-10-14T07:45:00Z St09909 38 /* How to run the RCU - DRORC - Busybox setup */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC. Components in LAB setup : * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. [[How to run the RCU - DRORC - Busybox setup]] === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> === Download Section === Specification document:<br> [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] <br> Source files:<br> [http://svn.ift.uib.no/svn/busybox_firmware SVN database] | [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database Trigger Receiver] <br> BusyBox firmware:<br> <ul> <li>'''Revision 31 : '''</li> [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] </ul> <br> VHDL source code for Trigger Receiver module:<br> <ul> [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/vhdl/ VHDL code for Trigger Receiver] </ul> <br> DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] <br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] cb056dc59641d3cf2fc434544a7cc4bd96b35c08 829 828 2009-10-14T08:01:33Z St09909 38 /* Download Section */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC. Components in LAB setup : * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. [[How to run the RCU - DRORC - Busybox setup]] === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> == BusyBox Firmware == === Download Section === [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 : [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] DCS board firmware for BusyBox:<br> <ul> [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] </ul> <br> Related documents for BusyBox:<br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] <br> [[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] <br> [[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] <br> [[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] <br> [[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] dd8b1ff83b3a0aa9af13eb4171b0358f171ef679 830 829 2009-10-14T08:06:15Z St09909 38 /* Compiled BusyBox Firmware Versions */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC. Components in LAB setup : * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. [[How to run the RCU - DRORC - Busybox setup]] === Version history === '''1.0 ''' <br> <ul> <li> Magne Munkejord </li> </ul> <br> == BusyBox Firmware == === Download Section === [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 : [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 354ca4d27c12f3fe4f98490ee94a42c79d6492b3 831 830 2009-10-14T08:12:33Z St09909 38 /* BusyBox Hardware tests at UiB */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == === Download Section === [[Media:User_guide_busybox.pdf‎‎ | user_guide_busybox.pdf]] ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 : [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 8ad411cc1d7bd353dc791b22c422f03e7c84638e 832 831 2009-10-14T08:13:11Z St09909 38 /* Download Section */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 : [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] : [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 1e647c2d5500c3df87ab7772bdb8b373bf9fe210 833 832 2009-10-14T09:40:37Z St09909 38 /* BusyBox Firmware */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== Compiled BusyBox Firmware Versions ==== ====== BusyBox FPGAs ====== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ;Revision 31 [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 81eb2fd137af0d05d290c5275d6d2daabe07a409 834 833 2009-10-14T09:58:08Z St09909 38 /* Generating FPGA configuration files from source code */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== Compiled BusyBox Firmware Versions ==== ====== BusyBox FPGAs ====== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ;Revision 31 [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== [[Electronics_for_the_Time_Projection_Chamber_(TPC)#Download_Section|BUSYBOX]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 9d4bb7872ec585b22d4365b864858b5a5a33f51e 835 834 2009-10-14T11:10:01Z St09909 38 /* DCS board firmware for BusyBox */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== Compiled BusyBox Firmware Versions ==== ====== BusyBox FPGAs ====== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ;Revision 31 [http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] [http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ===== DCS board firmware for BusyBox ===== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 8d5b321e5ff234dad00e19713001ad3d91a21486 836 835 2009-10-14T11:31:31Z St09909 38 /* Compiled BusyBox Firmware Versions */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ==== BusyBox FPGAs ==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 01add063391251e786c540ab7b61ac73155215f5 837 836 2009-10-14T11:34:07Z St09909 38 /* BusyBox Firmware */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] cffa23aba52858720b7c09abb426704420ac0510 846 837 2009-10-20T15:09:42Z St09909 38 /* BusyBox Firmware */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[BusyBoxRegisters]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] d7891837539f94c58a9f597545c8e65531f931fd 847 846 2009-10-20T15:10:15Z St09909 38 /* BusyBox Firmware */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 897a3fa8a543e8296d85e3f40d2912531b92ab24 848 847 2009-10-20T15:11:35Z St09909 38 /* BusyBox Firmware */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] cb45b05ad5f22e5189f9f451c9191a925df688fb 856 848 2009-10-22T12:42:05Z St09909 38 /* Compiled BusyBox Firmware Versions */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ;Revision 35 ;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V) ;:* Added "number of channels" status register. ;:* Added Stress test mode for testing only. (Disabled by default.) ;:;Download ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] e921d9236611bcf8e3c38e7ff60aa06bf585f5cc 858 856 2009-10-28T09:28:00Z St09909 38 /* Compiled BusyBox Firmware Versions */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] <!-- ;Revision 35 ;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V) ;:* Added "number of channels" status register. ;:* Added Stress test mode for testing only. (Disabled by default.) ;:;Download ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit] --> ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] [[Category:Alice]] [[Category:Trigger]] 48105c1a0c39a450458995b37c1db01d35350cf8 ParticlePhysicsGroupMeetings 0 139 838 815 2009-10-14T13:55:07Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 ad5cfe0038628d7e2e876da65f494e1cfe97e90b 866 838 2009-11-02T15:12:53Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[November 2 2009 seminar - 3D detectors and the lab - Dominik, Lars-Halvor, Kristine]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 b0cb0c526a97b5bd3d7d6e0fe91baaf470e0bdd2 867 866 2009-11-02T15:13:08Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[November 2 2009 seminar - 3D detectors and the lab - Dominik, Lars-Halvor, Kristine]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 a41b259d36563c945d0779e20c88718ba8cc449d 868 867 2009-11-02T15:13:42Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 83dce29ea2945bfca7c6b113c7f728b5503069f6 October 14 2009 seminar - taus 0 240 839 2009-10-14T13:56:23Z Tbu082 19 Created page with 'Presentation pdf: [[file:TauPair-Seminar-2009-08-13.pdf]]' wikitext text/x-wiki Presentation pdf: [[file:TauPair-Seminar-2009-08-13.pdf]] c01d163fa2580d0f45a7e2880962ee28c10f9991 865 839 2009-11-02T15:11:39Z Tbu082 19 wikitext text/x-wiki Presentation pdf: [[file:TauPair-Seminar-2009-08-13.pdf]] [[ParticlePhysicsGroupMeetings|Back to meetings]] efd50c1781e6f4562ce5a0beb686aaab70ea6749 File:TauPair-Seminar-2009-08-13.pdf 6 241 840 2009-10-14T13:56:34Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Busy Box and related/BusyBox Registers 0 242 843 2009-10-20T15:02:49Z St09909 38 Created page with '{| border="1" cellpadding="1" cellspacing="0" |colspan="5"| ====Busy Box Status and Contol Registers==== |- !Address !Read/Write !Name !Description !Default Value |- |0x0001 |RW ...' wikitext text/x-wiki {| border="1" cellpadding="1" cellspacing="0" |colspan="5"| ====Busy Box Status and Contol Registers==== |- !Address !Read/Write !Name !Description !Default Value |- |0x0001 |RW |TX module |For sending messages to DRORCs. Bit 7-0 is TX data. Bit 15-8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |TBD |- |0x1XXX |RW |RX memory |Memory where all messages received from DRORCs will be stored. |TBD |- |0x2000 |R |RX memory pointer |Holds the value where the next message will be written in RX memory. |TBD |- |0x2001 |R |EventID count |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |TBD |- |0x2002 |R |Current EventID(35-32) |The EventID which is currently being matched. |TBD |- |0x2003 |R |Current EventID(31-16) | |TBD |- |0x2004 |R |Current EventID(15- 0) | |TBD |- |0x2005 |R |Newest EventID(35-32) |The EventID most recently received from the TTC system. |TBD |- |0x2006 |R |Newest EventID(31-16) | |TBD |- |0x2007 |R |Newest EventID(15- 0) | |TBD |- |0x2008 |RW |L0 trigger timeout |Number of clock cycles 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |TBD |- |0x2009 |RW |FEE buffers available |Config: Holds the number buffers assumed on the FEE. |TBD |- |0x200A |RW |Halt FW matching |If LSB is set to 1 the internal FSM will halt in a wait state. |TBD |- |0x200B |w |Force match |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. |TBD |- |0x200C |RW |Re-Request Timeout |Number of clock cycles to wait in between sending requests to the DRORCs. |TBD |- |0x200D |R |Current RequestID |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |TBD |- |0x200E |R |Retry Count |Number of times requests have been sent to DRORCs. |TBD |- |0x2010 |R |Busy time(31-16) |Holds value of counter for number of clock |TBD |- |0x2011 |R |Busy time(15- 0) |cycles BUSY has been asserted. |TBD |- |0x2012 |RW |RX mem filter |Allows filtering of messages that are stored in RX memory. Bit 7-0 is the pattern that will be matched with the channelnumber of the message. Bit 15-8 allows enableing matching of individual bits 7-0. |TBD |- |0x21XX |RW |Channel Registers |'XX' in the address gives the channelnumber in hexadecimal. Bit 0 is enable/disable (0/1) Bit 1 indicates that the current EventID has been matched on this channel. |TBD |} cd86f55cd14fd0a09273c84b1120638bb1382f66 844 843 2009-10-20T15:06:12Z St09909 38 moved [[Busy Box and related/BusyBoxRegisters]] to [[Busy Box and related/BusyBox Registers]] wikitext text/x-wiki {| border="1" cellpadding="1" cellspacing="0" |colspan="5"| ====Busy Box Status and Contol Registers==== |- !Address !Read/Write !Name !Description !Default Value |- |0x0001 |RW |TX module |For sending messages to DRORCs. Bit 7-0 is TX data. Bit 15-8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |TBD |- |0x1XXX |RW |RX memory |Memory where all messages received from DRORCs will be stored. |TBD |- |0x2000 |R |RX memory pointer |Holds the value where the next message will be written in RX memory. |TBD |- |0x2001 |R |EventID count |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |TBD |- |0x2002 |R |Current EventID(35-32) |The EventID which is currently being matched. |TBD |- |0x2003 |R |Current EventID(31-16) | |TBD |- |0x2004 |R |Current EventID(15- 0) | |TBD |- |0x2005 |R |Newest EventID(35-32) |The EventID most recently received from the TTC system. |TBD |- |0x2006 |R |Newest EventID(31-16) | |TBD |- |0x2007 |R |Newest EventID(15- 0) | |TBD |- |0x2008 |RW |L0 trigger timeout |Number of clock cycles 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |TBD |- |0x2009 |RW |FEE buffers available |Config: Holds the number buffers assumed on the FEE. |TBD |- |0x200A |RW |Halt FW matching |If LSB is set to 1 the internal FSM will halt in a wait state. |TBD |- |0x200B |w |Force match |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. |TBD |- |0x200C |RW |Re-Request Timeout |Number of clock cycles to wait in between sending requests to the DRORCs. |TBD |- |0x200D |R |Current RequestID |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |TBD |- |0x200E |R |Retry Count |Number of times requests have been sent to DRORCs. |TBD |- |0x2010 |R |Busy time(31-16) |Holds value of counter for number of clock |TBD |- |0x2011 |R |Busy time(15- 0) |cycles BUSY has been asserted. |TBD |- |0x2012 |RW |RX mem filter |Allows filtering of messages that are stored in RX memory. Bit 7-0 is the pattern that will be matched with the channelnumber of the message. Bit 15-8 allows enableing matching of individual bits 7-0. |TBD |- |0x21XX |RW |Channel Registers |'XX' in the address gives the channelnumber in hexadecimal. Bit 0 is enable/disable (0/1) Bit 1 indicates that the current EventID has been matched on this channel. |TBD |} cd86f55cd14fd0a09273c84b1120638bb1382f66 849 844 2009-10-21T08:40:40Z St09909 38 wikitext text/x-wiki {| border="1" cellpadding="1" cellspacing="0" |colspan="5"| ====Busy Box Status and Contol Registers==== |- !Address !Mode !width="170"|Name !Description !Default Value |- |0x0001 |RW |TX module |For sending messages to DRORCs. * Bit 7-0 is TX data. * Bit 15-8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |0x1XXX |RW |RX memory |Memory where all messages received from DRORCs will be stored. |0x0000 |- |0x2000 |R |RX memory pointer |Holds the value where the next message will be written in RX memory. |0x0000 |- |0x2001 |R |EventID FIFO count |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |0x2002 |R |Current EventID(35-32) |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |0x2003 |R |Current EventID(31-16) |0x0000 |- |0x2004 |R |Current EventID(15- 0) |0x0000 |- |0x2005 |R |Newest EventID(35-32) |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |0x2006 |R |Newest EventID(31-16) |0x0000 |- |0x2007 |R |Newest EventID(15- 0) |0x0000 |- |0x2008 |RW |L0 Trigger Timeout |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |0x2009 |RW |Busy Condition |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 7-4 - Current MEB count. * Bit 3-0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |0x200A |RW |Halt FSM matching |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |0x200B |T |Force match |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |0x200C |RW |Re-Request Timeout |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |0x200D |R |Current RequestID |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |0x200E |R |Retry Count(15-0) |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |0x2010 |R |Busy time(31-16) |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |0x2011 |R |Busy time(15-0) |0x0000 |- |0x2012 |RW |RX mem filter |Allows filtering of messages that are stored in RX memory. *Bit 7-0 is the pattern that will be matched with the channelnumber of the message. *Bit 15-8 allows enableing matching of individual bits 7-0. |0x0000 |- |0x2015 |R |Firmware Revision |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |0x2016 |RW |Stresstest Enable(0) |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |0x21XX |RW |Channel Registers |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |} 0cd7d874f11a256affdba083c9c49d129f8b49c2 850 849 2009-10-21T09:06:20Z St09909 38 /* Busy Box Status and Contol Registers */ wikitext text/x-wiki {| border="1" cellpadding="1" cellspacing="0" |colspan="5"| {| border="1" cellpadding="1" cellspacing="0" |colspan="5"| ====Busy Box Status and Contol Registers==== |- !Address !Mode !width="170"|Name !Description !Default Value |- |0x0001 |RW |TX module(15:0) |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |0x1000-0x1FFF |RW |RX memory |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - DRORC Message(47:32) * Address ending "01" - DRORC Message(31:16) * Address ending "10" - DRORC Message(15:0) * Address ending "11" - Receiving Channel number(7:0) |0x0000 |- |0x2000 |R |RX memory pointer(13:0) |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |0x2001 |R |EventID FIFO count(3:0) |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |0x2002 |R |Current EventID(35:32) |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |0x2003 |R |Current EventID(31:16) |0x0000 |- |0x2004 |R |Current EventID(15:0) |0x0000 |- |0x2005 |R |Newest EventID(35:32) |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |0x2006 |R |Newest EventID(31:16) |0x0000 |- |0x2007 |R |Newest EventID(15:0) |0x0000 |- |0x2008 |RW |L0 Trigger Timeout(15:0) |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |0x2009 |RW |Busy Condition(15:0) |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |0x200A |RW |Halt FSM matching(0) |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |0x200B |T |Force match(0) |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |0x200C |RW |Re-Request Timeout(15:0) |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |0x200D |R |Current RequestID(3:0) |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |0x200E |R |Retry Count(15:0) |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |0x2010 |R |Busy time(31:16) |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |0x2011 |R |Busy time(15:0) |0x0000 |- |0x2012 |RW |RX mem filter(15:0) |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |0x2014 |R |Number of Channels |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |0x2015 |R |Firmware Revision |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |0x2016 |RW |Stresstest Enable(0) |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |0x21XX |RW |Channel Registers |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |} cf0ea19120b42f6641c737073b83b4e365becad3 851 850 2009-10-21T10:12:34Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - DRORC Message(47:32) * Address ending "01" - DRORC Message(31:16) * Address ending "10" - DRORC Message(15:0) * Address ending "11" - Receiving Channel number(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- !colspan="5"| Trigger Receiver Module Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |rowspan="11" |Control(15:0) |rowspan="11" |0x3000 |RW |[0] Serial B on/off |1 |- |RW |[1] Disable error masking |0 |- |RW |[2] Enable RoI Decoding |0 |- |RW |[3] L0 Support |1 |- |R |[4:7] Unused |N/A |- |RW |[8] L2Accept Event FIFO storage mask |1 |- |RW |[9] L2Reject Event FIFO storage mask |1 |- |RW |[10] L2Timeout Event FIFO storage mask |1 |- |RW |[11] L1message mask |1 |- |RW |[12] Trigger Input Mask Enable |0 |- |RW |[13:15] Unused |N/A |- |rowspan="6" |Control(7:0) |rowspan="6" |0x3001 |R |[0] Bunschcounter overflow |N/A |- |R |[1] Run Active |N/A |- |R |[2] Busy receiving trigger sequence |N/A |- |R |[3] Unused |N/A |- |R |[7:4] CDH version |0x2 |- |R |[15:8] Trigger Receiver version |0x13 |- |Reset Counters |0x3002 |T |[0] Reset all counters in the Trigger Receiver |N/A |- - |} 562e8cd6f621f36fc5d4f501771ba25dffd17d36 853 851 2009-10-22T08:29:11Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - DRORC Message(47:32) * Address ending "01" - DRORC Message(31:16) * Address ending "10" - DRORC Message(15:0) * Address ending "11" - Receiving Channel number(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |rowspan="11" |Control(15:0) |rowspan="11" |0x3000 |RW |[0] Serial B on/off |1 |- |RW |[1] Disable error masking |0 |- |RW |[2] Enable RoI Decoding |0 |- |RW |[3] L0 Support |1 |- |R |[4:7] Unused |N/A |- |RW |[8] L2Accept Event FIFO storage mask |1 |- |RW |[9] L2Reject Event FIFO storage mask |1 |- |RW |[10] L2Timeout Event FIFO storage mask |1 |- |RW |[11] L1message mask |1 |- |RW |[12] Trigger Input Mask Enable |0 |- |RW |[13:15] Unused |N/A |- |rowspan="6" |Control(7:0) |rowspan="6" |0x3001 |R |[0] Bunschcounter overflow |N/A |- |R |[1] Run Active |N/A |- |R |[2] Busy receiving trigger sequence |N/A |- |R |[3] Unused |N/A |- |R |[7:4] CDH version |0x2 |- |R |[15:8] Trigger Receiver version |0x13 |- |Reset Counters |0x3002 |T |[0] Reset all counters in the Trigger Receiver |N/A |- |} 4acd43fa8866f694af5df73d4468657c9a8224d9 854 853 2009-10-22T11:41:25Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - DRORC Message(47:32) * Address ending "01" - DRORC Message(31:16) * Address ending "10" - DRORC Message(15:0) * Address ending "11" - Receiving Channel number(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="120"|Bit slice !Description |---- |Control |0x3000 |RW |[15:13] |Unused |---- | | | |[12] |Trigger Input Mask Enable. Default=0 |---- | | | |[11] |L1a message mask. Default=1 |---- | | | |[10] |L2 Timeout FIFO storage mask. Default=1 |---- | | | |[9] |L2r FIFO storage mask. Default=1 |---- | | | |[8] |L2a FIFO storage mask. Default=1 |---- | | | |[7:4] |Unused |---- | | | |[3] |L0 support. Default=1 |---- | | | |[2] |Enable RoI decoding. Default=0 |---- | | | |[1] |Disable_error_masking. Default=0 |---- | | | |[0] |Serial B channel on/off. Default=1 |---- |Control |0x3001 | |[15:8] |Trigger Receiver Version. Default=0x13 |---- | | | |[7:4] |CDH version. Default=0x2 |---- | | | |[3] |Not Used |---- | | | |[2] |Busy (receiving sequence) - |---- | | | |[1] |Run Active - |---- | | | |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |L1_Latency |0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- | | |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info[17:0] |0x4028 |R |[12:0] |Latest Received Event information: |---- | | |R |[12] |Include payload |---- | | |R |[11] |Event has L2 Accept trigger |---- | | |R |[10] |Event has L2 Reject trigger |---- | | |R |[9] |Calibration trigger event |---- | | |R |[8] |Software trigger event |---- | | |R |[4:7] |Calibration/SW trigger type (= RoC) |---- | | |R |[3] |NA(=‘0’) |---- | | |R |[2] |NA(=‘0’) |---- | | |R |[1] |Region of Interest announced (=ESR) |---- | | |R |[0] |NA(=’0’) |---- |Event_error |0x4029 |R |[15:0] |Latest Received Event error conditions: |---- | | |R |[15] |L1 message arrives outside legal timeslot |---- | | |R |[14] |Missing L1 |---- | | |R |[13] |Boundary L1 |---- | | |R |[12] |Spurious L1 |---- | | |R |[11] |Missing L0 |---- | | |R |[10] |Spurious L0 |---- | | |R |[9] |TTCrx Address Error (not X”0003”) |---- | | |R |[8] |NA (= ‘0’) |---- | | |R |[7] |Incomplete L2a Message |---- | | |R |[6] |Incomplete L1 Message |---- | | |R |[5] |Unknown Message Address Received |---- | | |R |[4] |Double Bit Hamming Error Broadcast. |---- | | |R |[3] |Single Bit Hamming Error Broadcast. |---- | | |R |[2] |Double Bit Hamming Error Individually Addr. |---- | | |R |[1] |Single Bit Hamming Error Individually Addr. |---- | | |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x4029 |R |[8:0] |Latest Received Event error conditions: |---- | | |R |[8] |NA (= ‘0’) |---- | | |R |[7] |L2 message content error |---- | | |R |[6] |L1 message content error |---- | | |R |[5] |Prepulse error (=0; possible future use) |---- | | |R |[4] |NA (= ‘0’) |---- | | |R |[3] |NA (= ‘0’) |---- | | |R |[2] |L2 message missing/timeout |---- | | |R |[1] |L2 message arrives outside legal timeslot |---- | | |R |[0] |L1 message missing/timeout |---- |} 601b6e680bd072b6123145e77fc3487d1191bdf2 855 854 2009-10-22T12:17:48Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - DRORC Message(47:32) * Address ending "01" - DRORC Message(31:16) * Address ending "10" - DRORC Message(15:0) * Address ending "11" - Receiving Channel number(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x4051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x4053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x4054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 7d63de13fb08ff681365033bf9159d5a25010844 Busy Box and related/BusyBoxRegisters 0 243 845 2009-10-20T15:06:12Z St09909 38 moved [[Busy Box and related/BusyBoxRegisters]] to [[Busy Box and related/BusyBox Registers]] wikitext text/x-wiki #REDIRECT [[Busy Box and related/BusyBox Registers]] 9540d053f1fa0b3a5c7a9edea277cd9bc9793a5c IC studio 0 28 859 78 2009-10-29T19:02:24Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg New Library og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "View Type" Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg show palette fra ikonlisten til høyre. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation a45724bceaeaa5208fe8403e36984f9382cb246c 860 859 2009-10-29T19:06:36Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg show palette fra ikonlisten til høyre. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 1b318062c8f7c0ff90fcd44f2f854f66d0fd8148 861 860 2009-10-29T20:06:59Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 20b5906717a6ab4c1ecd79031065a425fa003312 862 861 2009-10-29T20:25:21Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 4cfe683fb6c0a73a4057cefe9709332f84bcdf61 864 862 2009-11-02T09:47:26Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4_new.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menuen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må fortelle simulatoren hva vi vil ha ut av den. Sett prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 5ca5aa5daea49fe9079b71721f72cf5a8b957c0a November 4 2009 seminar - 3D detectors and the lab 0 244 869 2009-11-02T15:15:35Z Tbu082 19 Created page with 'November 4, IFT Room 316, 14:00 Speakers: * Dominik Fehlker * Lars-Halvard Helleve * Kristine Indahl Helle' wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * Dominik Fehlker * Lars-Halvard Helleve * Kristine Indahl Helle 64f4c7edc4de4341b9ce515ba702ac39d1fbd1c6 870 869 2009-11-02T15:16:41Z Tbu082 19 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * Dominik Fehlker * Lars-Halvard Helleve * Kristine Indahl Helle Evo details: e1e941b3553e194c80da9494b5aac86e89263bbd 871 870 2009-11-02T16:03:04Z Mug004 27 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * Dominik Fehlker * Lars-Halvard Helleve * Kristine Indahl Helle Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) 7669e2964fc7cacb912298eb9a06c6cf68855f39 November 4 2009 seminar - 3D detectors and the lab 0 244 875 871 2009-11-04T12:13:02Z Dfe002 7 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt Dominik Fehlker] * Lars-Halvard Helleve * Kristine Indahl Helle Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) c49873a6932308d5d1147dfedc63c6261c05c965 877 875 2009-11-04T12:15:50Z Tbu082 19 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt Dominik Fehlker] * Lars-Halvard Helleve * Kristine Indahl Helle - [[File:3D Si pixels]] Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) 6fcb4a2e6591eb6dd5bdf1855ecb11a79b34aa0b 878 877 2009-11-04T12:16:29Z Lhe014 14 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt Dominik Fehlker] * [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf Lars-Halvard Thunold Helleve] * Kristine Indahl Helle - [[File:3D Si pixels]] Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) f7928ce1c7289fdd3b28e454a269f4b291c29ffc 880 878 2009-11-04T12:18:16Z Tbu082 19 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt Dominik Fehlker] * [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf Lars-Halvard Thunold Helleve] * Kristine Indahl Helle - [[File:3D_Si_pixels.pdf|3D Si Pixels]] Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) c53280aebf51ee93aa22dcf2310e5058c11bc132 881 880 2009-11-04T12:18:28Z Tbu082 19 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt Dominik Fehlker] * [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf Lars-Halvard Thunold Helleve] * Kristine Indahl Helle - [[File:3D_Si_pixels.pdf]] Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) d8741b0ca1de4bd9bbbc58bc93c0397e7bd30367 882 881 2009-11-04T12:33:51Z Tbu082 19 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt Dominik Fehlker] [[File:Dominik_Fehlker_part_phys_seminar_041109.pdf]] * [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf Lars-Halvard Thunold Helleve] * Kristine Indahl Helle - [[File:3D_Si_pixels.pdf]] Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) 821c49acd3c5ca02a6ad2f88582dbfba99ef2a3f 884 882 2009-11-04T12:41:59Z Dfe002 7 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * Dominik Fehlker [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf Lars-Halvard Thunold Helleve] * Kristine Indahl Helle - [[File:3D_Si_pixels.pdf]] Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) d82f6ee0c0d2fc72cf8b27f97e6e71c1fa2d41bf File:SiPM small talk 041109 Lars-Halvard.pdf 6 245 876 2009-11-04T12:15:24Z Lhe014 14 SiPM small talk by Lars-Halvard Thunold Helleve wikitext text/x-wiki SiPM small talk by Lars-Halvard Thunold Helleve bccd7390194a998d199675e9f488e9c0c16f49cf File:3D Si pixels.pdf 6 246 879 2009-11-04T12:17:35Z Tbu082 19 Kristine Indahl Helles presentation for IFT particle physics seminar 2009-11-04 wikitext text/x-wiki Kristine Indahl Helles presentation for IFT particle physics seminar 2009-11-04 932247c918e935e65d48fa54a920b68f0c361ba7 File:Dominik Fehlker part phys seminar 041109.pdf 6 247 883 2009-11-04T12:34:30Z Tbu082 19 Dominik Fehlker - Particle Physics Seminar 2009-11-04 wikitext text/x-wiki Dominik Fehlker - Particle Physics Seminar 2009-11-04 8ab30f3fd9567a6b168688ab8fe2761226edfd59 Older presentations 0 212 885 714 2009-11-05T08:14:35Z Dfe002 7 wikitext text/x-wiki 15.09.09 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.09 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] 3.2.2009 * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results] f8c48584b256297212dbc9dce12e191bc217c5ac 887 885 2009-11-05T08:15:04Z Dfe002 7 wikitext text/x-wiki 15.09.2009 *[https://wikihost.uib.no/ift/images/c/ce/PET-presentasjon-Detectorlab_english.pdf Jostein: PET presentation] 24.06.2009 *[https://wikihost.uib.no/ift/images/d/d6/Hege_Masterpresentation.pdf Hege: Masterpresentation] 03.02.2009 * [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/axialpet.ppt Dominik: MAPD/MPPC Characterization & Axial PET] * [https://wikihost.uib.no/ift/images/9/90/Linearity_030209.pdf Hege: Linearity Results] 056e511ef46eb3edee6e5ffae3c52ac0cf63ff2c Detector lab 0 21 886 874 2009-11-05T08:14:39Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [http://https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab * Our weekly labmeeting is Tuesdays 11:15 in room 332. == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Upcoming meetings and conferences== * 11.12.09: MedViz seminar series - presentation of PET related projects, 1 hour * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 02.01. - 08.01.10: Spåtind meeting on particle physics (http://indico.cern.ch/event/spaatind-2010) * 15.02. - 20.02.10: Vienna conference on Instrumentation - Deadline 16.11.09. (http://vci.hephy.at/2010/) * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany === For internal use === [[material]] that can be used in official presentations. 824cbdc115fbcb9a8df523ede4256f00628ea619 910 886 2009-11-18T08:20:37Z Nfyku 4 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * Our weekly labmeeting is Tuesdays 11:15 in room 332. * 11.12.09: MedViz seminar series - presentation of PET related projects, 1 hour * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 02.01. - 08.01.10: Spåtind meeting on particle physics (http://indico.cern.ch/event/spaatind-2010) * 15.02. - 20.02.10: Vienna conference on Instrumentation - Deadline 16.11.09. (http://vci.hephy.at/2010/) * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany === For internal use === [[material]] that can be used in official presentations. c47793373ca2e34a271d272be6ee22ddceb5e1d1 IC studio 0 28 889 864 2009-11-05T12:08:12Z Nfyku 4 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Kilder (spenning-, strøm- og signalkilder) finnes under Add Source i menyen til høyre. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. Velg f. eks. en sinusspenning med frekvens på 1000Hz og amplitude 1V. Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint" fra menyen til høyre. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Sjekk at SPICE_Netlister er valgt. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet. Velg Probes/Plots og velg f. eks. TRAN for transient. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation ce38f7cd2a6eb784caf4148f176a01041e8d24fb 896 889 2009-11-16T18:40:40Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Denne informasjonen kan du finne igjen i .chi-filen. Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 52bd5f8c54b453c317496a5a240c34efc5ae8b66 897 896 2009-11-16T19:48:02Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. EZwave kan også startes fra kommandolinjen <pre> ezwave </pre> Åpne filen med etternavn .wdb i viewpoint-katalogen. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation b830b7c8c1979660484861a7f92d7a9cb59c8aa6 898 897 2009-11-16T19:49:18Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation 596a82ba7457715adab5a354d1b5c9dc8ffdd5ae 900 898 2009-11-16T20:04:24Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation adb9eef121341783839851f2f044038e1ffff056 901 900 2009-11-16T20:40:10Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-G (stor G) så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation d47df2413148d7d57c35e3149bada1cc5b775de7 902 901 2009-11-16T20:43:52Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation a722ea8e38e0634f57b8a5f38d5986637846c5cf 903 902 2009-11-17T08:43:23Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[Starte opp IC studio]] og fått startet programmet. ==Konstruksjon av inverter== 98256b8f330ebc7669fc2b23b70cacd7c40ce4c3 904 903 2009-11-17T08:44:12Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", http://doc.uib.no/wiki/ICStation = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 41531830cc079b877ea06e770e852961f21d3bac 905 904 2009-11-17T09:01:04Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til transistorene som under. Transistorene finner du under "Devices->MOS->nmos4" for nmos og "Devices->MOS->pmos4" for pmos. 6. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 7. Legg til 2bee0f7df59ae68f7808c78d295595b64b029bf3 906 905 2009-11-17T09:08:20Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til 748658bda42ca901a6263dabba725dd7ee0ed413 907 906 2009-11-17T09:10:43Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/mgc/ic.2005.1/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> For 2008 versjonen finner du dokumentasjonen under /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/ for pdf filene og /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ for html filene. Pdf filene kan åpnes med <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i et terminalvindu. Før du lukker dette kan det være lurt å bla litt her for å se etter feilmeldinger. Dersom du satte på DCOP under analyse vil du litt lengre oppe i filen finne alle nodespenningene og total power consumption for kretsen. Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuellt,erller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout" 8b6d407d07bbe03cdf2fc7fc52052be0ca29b914 909 907 2009-11-18T08:11:38Z Nfyku 4 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout" aee44c496bdaab47257a3971d98cd60feed28c50 911 909 2009-11-18T09:39:03Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[inverter.jpg]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk på Q og A teksten og trykk delete. Trykk så på "hide labels" på vesntre side. [[symbol.jpg]] 13. e3c2c7864d54fa297f19db5fb66ca8a5007f3e4b 912 911 2009-11-18T10:56:06Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[inverter.jpg]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk på Q og A teksten og trykk delete. Trykk så på "hide labels" på venstre side. [[symbol.jpg]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[pulse.jpg]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 5n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 3dd40f1928d2d97a260d4f220327657dd0e20e61 913 912 2009-11-18T11:27:40Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for delay estimering = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. ==Konstruksjon av inverter== 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[inverter.jpg]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[symbol.jpg]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[pulse.jpg]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. 3c434349718450db7f768cc90cc32656302e0930 917 913 2009-11-18T16:54:45Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[inverter.jpg]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[symbol.jpg]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. 437dd14dad8209405eb97ac8127649e5e0f6ef6a 926 917 2009-11-18T18:00:02Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|600px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|300px]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[inverter.jpg]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[symbol.jpg]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. ec061d6ed1bb3bc1a75b4977292072906e756eb4 927 926 2009-11-18T18:00:47Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[inverter.jpg]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[symbol.jpg]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. c5f14dc4ba5a39eb87b0fe7306d59227be9b79e0 928 927 2009-11-18T18:14:43Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|400px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. 465150654540ce91f5642c67eba0ba4b451dbf63 Busy Box and related/BusyBox Registers 0 242 890 855 2009-11-09T09:00:10Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - DRORC Message(47:32) * Address ending "01" - DRORC Message(31:16) * Address ending "10" - DRORC Message(15:0) * Address ending "11" - Receiving Channel number(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 8e7d6153e05e9f6ad6b571ac237ae722c58fb27d Lab Equipment 0 111 895 819 2009-11-13T08:10:02Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 |Optics department |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | |2x Anja |- |TTi EL302D |30V, 2A dual linear DC power supply | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} bbbf6b498245624920779c76a618fe8a39ea8404 File:Transient.png 6 248 899 2009-11-16T19:49:52Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Eksempler/Oppgaver 0 223 914 757 2009-11-18T16:51:29Z Ave082 33 wikitext text/x-wiki == Øvingsoppgaver PHYS223== === Problem 3.4 from Gray et.al. === For the common-source amplifier of Fig 3.12, calculate the small-signal voltage gain and the bias values of Vi and Vo where the small-signal voltage gain is unity with the transistor operating in the active region. [[Spice deck]] == Øvingsoppgaver PHYS222== === Estimering av delay === Du skal i denne oppgaven konstruere en inverter av transistorer, lage symbol på den for så å finne propogation delayet ved hjelp av simulering. Du skal også finne delayet for en Fan Out of Four FO4, en statisk flipflop og en dynamisk flipflop. 1. Følg tutorialet [[her]] eller prøv deg frem selv for å lage en inverter med tilhørende symbol i ICstudio. 2. Lag et nytt skjema der du legger inn inverteren, signal kildene og slikt, bruk en inverter som last. 3. Simuler og finn tpdr og tpdf 4. Lag til en inverter til under som har fire parallelle invertere som last 5. Simuler og finn tpdr og tpdf 6. Lag en dynamisk flipflop som vist i figur 7.19a s405 i Weste et.al. 7. Simuler og finn tpdr og tpdf om du vil kan du og prøve å finne ut setup tiden ved å sende innsagnelet inn litt før klokken. Du vil kunne se at utsignalet blir liggende på et mellomnivå i en del av pulsen. 8. Lag en latch fra transistorer med tilhørende symbol. Se figur 7.18 s405 i Weste et.al. 9. Gjør 6. og 7. for en statisk flipflop med det nye symbolet. Se figur 7.19b s405 i Weste et.al. 10. Regn ut path delay for den dynamiske og statisk flipflopen, bruk unit kapasitanser. 11. Prøv å bruke kondensatorene oppgitt av simuleringen for å se om du får samme delay som simuleringen. [[Tips]] [[Category:Mikroelektronikk]] d39e8fce9e14f6802e68b7e1d6f0fec812fd4aa6 915 914 2009-11-18T16:52:44Z Ave082 33 wikitext text/x-wiki == Øvingsoppgaver PHYS223== === Problem 3.4 from Gray et.al. === For the common-source amplifier of Fig 3.12, calculate the small-signal voltage gain and the bias values of Vi and Vo where the small-signal voltage gain is unity with the transistor operating in the active region. [[Spice deck]] == Øvingsoppgaver PHYS222== === Estimering av delay === Du skal i denne oppgaven konstruere en inverter av transistorer, lage symbol på den for så å finne propogation delayet ved hjelp av simulering. Du skal også finne delayet for en Fan Out of Four FO4, en statisk flipflop og en dynamisk flipflop. 1. Følg tutorialet [[her]] eller prøv deg frem selv for å lage en inverter med tilhørende symbol i ICstudio. 2. Lag et nytt skjema der du legger inn inverteren, signal kildene og slikt, bruk en inverter som last. 3. Simuler og finn tpdr og tpdf 4. Lag til en inverter til under som har fire parallelle invertere som last 5. Simuler og finn tpdr og tpdf 6. Lag en dynamisk flipflop som vist i figur 7.19a s405 i Weste et.al. 7. Simuler og finn tpdr og tpdf om du vil kan du og prøve å finne ut setup tiden ved å sende innsagnelet inn litt før klokken. Du vil kunne se at utsignalet blir liggende på et mellomnivå i en del av pulsen. 8. Lag en latch fra transistorer med tilhørende symbol. Se figur 7.18 s405 i Weste et.al. 9. Gjør 6. og 7. for en statisk flipflop med det nye symbolet. Se figur 7.19b s405 i Weste et.al. 10. Regn ut path delay for den dynamiske og statisk flipflopen, bruk unit kapasitanser. 11. Prøv å bruke kondensatorene oppgitt av simuleringen for å se om du får samme delay som simuleringen. [[Tips]] [[Category:Mikroelektronikk]] 9bde266dfbf1eff26b25c148c1ef129c735a36a2 918 915 2009-11-18T16:55:31Z Ave082 33 wikitext text/x-wiki == Øvingsoppgaver PHYS223== === Problem 3.4 from Gray et.al. === For the common-source amplifier of Fig 3.12, calculate the small-signal voltage gain and the bias values of Vi and Vo where the small-signal voltage gain is unity with the transistor operating in the active region. [[Spice deck]] == Øvingsoppgaver PHYS222== === Estimering av delay === Du skal i denne oppgaven konstruere en inverter av transistorer, lage symbol på den for så å finne propogation delayet ved hjelp av simulering. Du skal også finne delayet for en Fan Out of Four FO4, en statisk flipflop og en dynamisk flipflop. 1. Følg tutorialet [[IC_studio#Tutorial_for_konstruksjon_av_inverter_og_symbol]] eller prøv deg frem selv for å lage en inverter med tilhørende symbol i ICstudio. 2. Lag et nytt skjema der du legger inn inverteren, signal kildene og slikt, bruk en inverter som last. 3. Simuler og finn tpdr og tpdf 4. Lag til en inverter til under som har fire parallelle invertere som last 5. Simuler og finn tpdr og tpdf 6. Lag en dynamisk flipflop som vist i figur 7.19a s405 i Weste et.al. 7. Simuler og finn tpdr og tpdf om du vil kan du og prøve å finne ut setup tiden ved å sende innsagnelet inn litt før klokken. Du vil kunne se at utsignalet blir liggende på et mellomnivå i en del av pulsen. 8. Lag en latch fra transistorer med tilhørende symbol. Se figur 7.18 s405 i Weste et.al. 9. Gjør 6. og 7. for en statisk flipflop med det nye symbolet. Se figur 7.19b s405 i Weste et.al. 10. Regn ut path delay for den dynamiske og statisk flipflopen, bruk unit kapasitanser. 11. Prøv å bruke kondensatorene oppgitt av simuleringen for å se om du får samme delay som simuleringen. [[Tips]] [[Category:Mikroelektronikk]] a8fd944863fb5935ac1fc1af0aac83c5c38881c7 Tips 0 249 916 2009-11-18T16:53:52Z Ave082 33 Created page with '==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og t...' wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[pulse.jpg]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. fa5443a684b31b2a7e2dfe023fd2ea16f57b541c 921 916 2009-11-18T17:56:14Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[pulse.jpg]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[skjema.jpg]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[graf.jpg]] 0773584f9c0e5062c4fe0897c01cc8bc4a64488d 922 921 2009-11-18T17:57:07Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] 0b5cfd3d4c7a7006bb86c847f07360be59495202 924 922 2009-11-18T17:58:37Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg|200px]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] 167c88a3d4cc5dda9c7f7078231a44f5c10b47b1 925 924 2009-11-18T17:58:57Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg|400px]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] 00b8feda2a3b47c4d963eebe3c829b39e6342d02 Tutorials 0 105 919 217 2009-11-18T17:20:33Z Ave082 33 wikitext text/x-wiki [[http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow]] [[http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial]] [[http://pages.cs.wisc.edu/~david/courses/cs755/cs755/ VLSI System Design course with tutorials]] [[http://www.swarthmore.edu/NatSci/tali/E77/Mentor_Tutorials/tutorials.htm Mentor Graphic Tutorials]] [[Category:Mikroelektronikk]] 3d90533cc11db45e1ae71d1c2e735d561c73e53f 920 919 2009-11-18T17:54:32Z Ave082 33 wikitext text/x-wiki [http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow] [http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial] [http://pages.cs.wisc.edu/~david/courses/cs755/cs755/ VLSI System Design course with tutorials] [http://www.swarthmore.edu/NatSci/tali/E77/Mentor_Tutorials/tutorials.htm Mentor Graphic Tutorials] [[Category:Mikroelektronikk]] 7719b95981516ca1e89234137f08790765d8fb32 File:Pulse.jpg 6 250 923 2009-11-18T17:57:39Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Inverter.jpg 6 251 929 2009-11-18T18:15:04Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Symbol.jpg 6 252 930 2009-11-18T18:15:33Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 IC studio 0 28 931 928 2009-11-18T18:16:13Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|300px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. c9aecbcaa3f6284e3569677fd23251b16a87fc14 932 931 2009-11-18T18:16:52Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. 01b9440f72ae9aed1de3c2594bd480151de0db8a 936 932 2009-11-18T18:34:01Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". 269c42c203beea0880a39e0dc6ccdc408af89aef 937 936 2009-11-18T18:57:04Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". 83bcf94817db43fbb82f6764750d4f5f95510692 938 937 2009-11-18T18:59:17Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/<math>\sqrt(Hz)</math> Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". 484883da6f24f48f37a822bfe5de0f2e17e04489 939 938 2009-11-18T19:00:19Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". 762fdc5228ab0f8aad68bd33385a82363fa84336 File:Graf.jpg 6 253 933 2009-11-18T18:17:45Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Skjema.jpg 6 254 934 2009-11-18T18:19:10Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Tips 0 249 935 925 2009-11-18T18:20:04Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg|400px]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg|600px]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] ef9d2de25fbcf1ed7415caef00460ebd1e55eeda 940 935 2009-11-18T19:44:53Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg|400px]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg|600px]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] == Andre tips til oppgaven == Fungerer ikke dynamiske eller statiske vippen? Sjekk at du har plassert clock og clock invers på riktig inngang/riktig transistor, de skifter side fra første til andre ledd. Prøv å bruke Cgs til kalkulering av delay om du ikke får noe fornuftig svar. Når du skal lage clk invers så ikke bruk en inverter, lag to pulskilder der den ene har et delay like langt som en pulsbredde. Ellers så får du et ekstra delay på klokken. a12abad3deeab121329305d48b70a543a0fb0f3f 941 940 2009-11-18T19:51:38Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg|400px]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg|600px]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] == Andre tips til oppgaven == Fungerer ikke dynamiske eller statiske vippen? Sjekk at du har plassert clock og clock invers på riktig inngang/riktig transistor, de skifter side fra første til andre ledd. Prøv å bruke Cgs til kalkulering av delay om du ikke får noe fornuftig svar. Når du skal lage clk invers så ikke bruk en inverter, lag to pulskilder der den ene har et delay like langt som en pulsbredde. Ellers så får du et ekstra delay på klokken. Tristate bufferet kan regnes som parasitisk, mao tilfører den 8C på inngangen og utgangen. bf7bf31758f2a35c2f8967b2bd0afa72ef42d55f 942 941 2009-11-18T21:08:29Z Ave082 33 wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg|400px]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg|600px]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] == Andre tips til oppgaven == Fungerer ikke dynamiske eller statiske vippen? Sjekk at du har plassert clock og clock invers på riktig inngang/riktig transistor, de skifter side fra første til andre ledd. Prøv å bruke Cgs til kalkulering av delay om du ikke får noe fornuftig svar. Når du skal lage clk invers så er det en fordel å ikke bruke en inverter, lag to pulskilder der den ene har et delay like langt som en pulsbredde, ellers så får du et ekstra delay på klokken aka clock skew. Tristate bufferet kan regnes som parasitisk, mao tilfører den 8C på inngangen og utgangen. Transmition gaten kobles opp med source mot kilden. Kobl bulk for nmos til gnd og pmos til VDD. Blir utsignalet bare bølgete rundt VDD så har du for kort pulslengde, hold deg over 2ns. 2ca21f77ce9330696efa7bdadb33b8ac7f1dc78d Busy Box and related/BusyBox Registers 0 242 943 890 2009-11-19T14:12:32Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} b8d7f90a2351792c35d412e58389ecef978c2e92 965 943 2009-11-25T15:22:52Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} da055be7c316afa2fada69162c49b56e60f99402 966 965 2009-11-25T15:24:54Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 34 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 996a0095ac814cef4a748057e74ee505eb18312c 967 966 2009-11-25T15:25:58Z St09909 38 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 40 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} b04d88f4e7b94713ea9debe169cd5eb3e1aba1ea ParticlePhysicsGroupMeetings 0 139 944 868 2009-11-24T10:53:10Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[November 24 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 81974aaabda5bd5ca24ca422eac685ef5378d02d 945 944 2009-11-24T10:56:17Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 1cee97514e97a56efb5ab2258f0b9211315d367c November 25 2009 seminar - Bs to mu,mu and Blackholes 0 255 946 2009-11-24T10:56:23Z Tbu082 19 Created page with 'Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - <math>B_s\rightarrow\mu\mu</math> * Jørn Maland - Black Holes Evo details: * Community: Universe * Name: Bergen gr...' wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - <math>B_s\rightarrow\mu\mu</math> * Jørn Maland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle 3916159d952c055caa4b926a2b2352f8ae57b730 947 946 2009-11-24T10:56:44Z Tbu082 19 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Bs->mu,mu * Jørn Maland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle 6cfac32e4fb391302a5eafc8ef6150e496139a31 948 947 2009-11-24T11:00:18Z Tbu082 19 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Bs->mu,mu * Jørn Maland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle [[ParticlePhysicsGroupMeetings|Back to meetings page]] 8696eca2eac724582857052bee53bfc957abdc96 950 948 2009-11-24T11:00:49Z Tbu082 19 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Bs->mu,mu * Jørn Maland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] 27f6d06e574ddeb6e4e4da659cb97825064b9efd 951 950 2009-11-24T12:38:37Z Tbu082 19 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Bs->mu,mu * Jørn Mæland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] b40549be9e4b70a21ef9942593c2dc526171b07a 952 951 2009-11-25T11:13:57Z Mug004 27 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Measurement of BF(Bs->mu,mu) in ATLAS * Jørn Mæland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] ab2b9f27622e237255b2e769b4100e680f45bd72 953 952 2009-11-25T11:17:16Z Mug004 27 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Measurement of BF(Bs->mu,mu) in ATLAS[[File:Bsmumu.pdf]] * Jørn Mæland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] bb100cd3bee25c3dcc99437bbbd2a6b4220a6510 955 953 2009-11-25T11:18:34Z Mug004 27 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Measurement of BF(Bs->mu,mu) in ATLAS [[File:Bsmumu.pdf]] * Jørn Mæland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] 57dc24c199e22bacaa98e28f3b7b6700f91a60ee 956 955 2009-11-25T11:19:31Z Mug004 27 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Measurement of BF(Bs->mu,mu) in ATLAS ([[File:Bsmumu.pdf]]) * Jørn Mæland - Black Holes Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] 73a9e49c3d390b352d6b9db99adf66eee25133a3 958 956 2009-11-25T11:25:09Z Khe002 37 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * Maren Ugland - Measurement of BF(Bs->mu,mu) in ATLAS ([[File:Bsmumu.pdf]]) * Jørn Mæland - Black Holes([[File:BlackholePress.pdf]]) Evo details: * Community: Universe * Name: Bergen group seminar * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] 2c0f869d4c334dfd053214a4fcdea8fe9da70743 November 4 2009 seminar - 3D detectors and the lab 0 244 949 884 2009-11-24T11:00:38Z Tbu082 19 wikitext text/x-wiki November 4, IFT Room 316, 14:00 Speakers: * Dominik Fehlker [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf Lars-Halvard Thunold Helleve] * Kristine Indahl Helle - [[File:3D_Si_pixels.pdf]] Evo details: * Community: Universe * Name: Bergen group meeting * Passw: particle (Available from 13:30) [[ParticlePhysicsGroupMeetings|Back to meetings page]] f8990c7c6d4e25b5c7dc88f033aede916130766d File:Bsmumu.pdf 6 258 960 2009-11-25T11:36:09Z Mug004 27 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 963 960 2009-11-25T12:19:57Z Mug004 27 uploaded a new version of "[[File:Bsmumu.pdf]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 964 963 2009-11-25T13:53:22Z Mug004 27 uploaded a new version of "[[File:Bsmumu.pdf]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:BlackholePress.pdf 6 260 962 2009-11-25T11:43:26Z Khe002 37 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ATLASThesesNotes 0 234 969 803 2009-11-27T13:42:38Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] 6e11701e46ffffbe616d1e115da75c4914942c0a 974 969 2009-11-27T13:46:56Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] d87eca67fa5f25c860f3a79812436f16354baf0e 975 974 2009-11-27T13:55:15Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Defended November 11th 2009 [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] b6ef94f6a2ea96ee3d76423b5de950cdd41da323 976 975 2009-11-27T13:56:21Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - 11-11-2009 [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - 25-09-2008[[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] 00af045bd3027de1de44f71fcc4c8f4ed48fcae5 977 976 2009-11-27T13:57:10Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - 11-11-2009 [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - 25-09-2008 [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] b3b6c9dbdc24e883fc0fae7ff92b15093b9b3e15 978 977 2009-11-27T13:57:23Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - 11-11-2009 [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - 25-09-2008 [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] 51094b2144013a151acbe86eb679dfec05d97bcd 979 978 2009-11-27T13:58:33Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - 11-11-2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - 25-09-2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - 25-07-2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] a989fc3cb35cf2e6c93a6126e78fd3fbe37d74a3 980 979 2009-11-27T13:59:04Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - 11-11-2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - 25-09-2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - 25-07-2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] d0282af42d73a049648c937f3b2c1c36982da7c5 981 980 2009-11-27T14:00:11Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - [[File:Oyvind_Saetre-Master_Thesis.pdf]] 4546b7e61c238271a472134e3c8bf834b4f86a46 982 981 2009-11-27T14:00:40Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] b491e3f54cd6785753af29228b3074ae018cb767 983 982 2009-11-27T14:05:23Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] === Ongoing Master theses === [[Orjan Dale - Master Thesis]] 2c58668be06e97019ca42b6529423125c93b6bfa 985 983 2009-11-27T14:10:24Z Mug004 27 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] === Ongoing Master theses === [[Orjan Dale - Master Thesis]] 828373827c1626db5dffc3c64e81ddcd0170e713 File:Maren Ugland-Master Thesis.pdf 6 261 970 2009-11-27T13:42:51Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Alex Kastanas-Master Thesis.pdf 6 262 971 2009-11-27T13:43:23Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Therese Sjursen-Master Thesis.pdf 6 263 972 2009-11-27T13:43:47Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Oyvind Saetre-Master Thesis.pdf 6 264 973 2009-11-27T13:44:01Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Orjan Dale - Master Thesis 0 265 984 2009-11-27T14:10:11Z Tbu082 19 Created page with '==Master Thesis Project Proposal -- Ørjan Dale== === Study of top quark events with tau leptons in ATLAS=== The top quark is the heaviest quark in the Standard Model of partic...' wikitext text/x-wiki ==Master Thesis Project Proposal -- Ørjan Dale== === Study of top quark events with tau leptons in ATLAS=== The top quark is the heaviest quark in the Standard Model of particle physics (SM) with a mass of M<sub>t</sub>>170 GeV. It was discovered relatively recently in 1995 at the Tevatron and hence is also the least studied of all quarks. The Large Hadron Collider (LHC) is designed to collide protons at a center of mass of up to 14 TeV and thus will constitute a top factory. Even in the first year of running (2010) top events should be abundant. Events with tops will be characterized by high transverse momentum (p<sub>T</sub>), jets with b-quarks (b-jets) and large missing transverse energy (E<sub>T</sub><sup>miss</sup>), all of which are also important characteristics of beyond SM physics processes. Thus top quarks studies provide an important early measurement with implications for new physics beyond the SM. One of the most studied extensions to the SM is SUper SYmmetry (SUSY) in which additional super-partners to the SM particles are introduced. SUSY can solve the Hierarchy problem, moreover the Lightest SUSY Particle (LSP) can provide a Dark Matter constituent particle. In SUSY models where the mass difference between of the Neutralino (LSP) and stau (next to LSP) is low co-annihilations balance the production of Dark Matter in the early universe. If such a SUSY model is realized in nature we would expect to see events with large p<sub>T</sub>, E<sub>T</sub><sup>miss</sup>, b-jets and to two tau leptons in the ATLAS experiment at LHC. The largest background to such a signal would be SM top quark events, where tau leptons arise from W-bosons created in the top decays. Specifically the aim of this work is to analyze tau leptons from top quark events both as SM signal in early LHC data and as background to a possible SUSY signal. The general properties of these events will be examined to be able to identify them correctly, and with this a selection tool will be built. It is to be hoped that the tool can be tested and tuned on real top quarks in early ATLAS data. Finally it will be applied to reject top background in SUSY signal simulations. Broken down by semester the project plan is as follows # Learn relevant ATLAS tools to analyze and present data. Take first look at early ATLAS data. Train and participate in ATLAS data quality monitoring. # Analyze top events in early ATLAS low luminosity data and compare to Monte Carlo simulations. # Make a cut selection for top events in high luminosity data to discriminate between top background and possible SUSY events. Write a selection tool in the ATLAS software framework to implement the cut selection. # Apply the selection to early SUSY analysis. Finish and document the tool. Write thesis. 49b74e85ad6984354812cf954b5195778243498a Orjan Dale - Master Thesis 0 265 986 984 2009-11-27T14:10:47Z Tbu082 19 wikitext text/x-wiki ==Master Thesis Project Proposal -- Ørjan Dale== === Study of top quark events with tau leptons in ATLAS=== The top quark is the heaviest quark in the Standard Model of particle physics (SM) with a mass of M<sub>t</sub>>170 GeV. It was discovered relatively recently in 1995 at the Tevatron and hence is also the least studied of all quarks. The Large Hadron Collider (LHC) is designed to collide protons at a center of mass of up to 14 TeV and thus will constitute a top factory. Even in the first year of running (2010) top events should be abundant. Events with tops will be characterized by high transverse momentum (p<sub>T</sub>), jets with b-quarks (b-jets) and large missing transverse energy (E<sub>T</sub><sup>miss</sup>), all of which are also important characteristics of beyond SM physics processes. Thus top quarks studies provide an important early measurement with implications for new physics beyond the SM. One of the most studied extensions to the SM is SUper SYmmetry (SUSY) in which additional super-partners to the SM particles are introduced. SUSY can solve the Hierarchy problem, moreover the Lightest SUSY Particle (LSP) can provide a Dark Matter constituent particle. In SUSY models where the mass difference between of the Neutralino (LSP) and stau (next to LSP) is low co-annihilations balance the production of Dark Matter in the early universe. If such a SUSY model is realized in nature we would expect to see events with large p<sub>T</sub>, E<sub>T</sub><sup>miss</sup>, b-jets and to two tau leptons in the ATLAS experiment at LHC. The largest background to such a signal would be SM top quark events, where tau leptons arise from W-bosons created in the top decays. Specifically the aim of this work is to analyze tau leptons from top quark events both as SM signal in early LHC data and as background to a possible SUSY signal. The general properties of these events will be examined to be able to identify them correctly, and with this a selection tool will be built. It is to be hoped that the tool can be tested and tuned on real top quarks in early ATLAS data. Finally it will be applied to reject top background in SUSY signal simulations. Broken down by semester the project plan is as follows # Learn relevant ATLAS tools to analyze and present data. Take first look at early ATLAS data. Train and participate in ATLAS data quality monitoring. # Analyze top events in early ATLAS low luminosity data and compare to Monte Carlo simulations. # Make a cut selection for top events in high luminosity data to discriminate between top background and possible SUSY events. Write a selection tool in the ATLAS software framework to implement the cut selection. # Apply the selection to early SUSY analysis. Finish and document the tool. Write thesis. [[ATLASThesesNotes|Back to ATLAS Theses and Notes]] 4084d3ac4df5dac8549adf03347931ac1ac7fac1 File:Thesis presentation.pdf 6 266 987 2009-11-27T14:10:55Z Mug004 27 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Bsmumu.pdf 6 258 988 964 2009-11-27T14:12:13Z Mug004 27 uploaded a new version of "[[File:Bsmumu.pdf]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ATLASThesesNotes 0 234 989 985 2009-11-27T14:58:00Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] === Ongoing Master theses === [[Orjan Dale - Master Thesis]] beb8de4b609081b8a144cd1a3b74c6429d546c79 1026 989 2009-12-12T12:07:55Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-Thesis.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] === Ongoing Master theses === [[Orjan Dale - Master Thesis]] 6eb5bcbbd90952d04dc4800517a436a047093696 1027 1026 2009-12-12T12:08:40Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] === Ongoing Master theses === [[Orjan Dale - Master Thesis]] b8bc528118b55182b341ae989890670384bee7d3 File:Mahdi 021209.pdf 6 267 990 2009-12-02T12:58:51Z Ato061 22 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Nils-Erik 021209.pdf 6 268 991 2009-12-02T13:05:03Z Ato061 22 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ParticlePhysicsGroupMeetings 0 139 992 945 2009-12-02T13:07:38Z Ato061 22 wikitext text/x-wiki == Particle Physics Group Meetings == December 02 2009 seminar - Theory [[Media:Mahdi_021209.pdf]] [[Media:Nils-Erik_021209.pdf‎]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 d057b97bd94da7a981ce131c4a5edda368e955ee 993 992 2009-12-02T16:34:09Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == December 02 2009 seminar - Theory [[Media:Mahdi_021209.pdf]] [[Media:Nils-Erik_021209.pdf‎]] * [[December 2 2009 seminare - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 2c820a5582742c21215e6c5b142e492637358e7b 994 993 2009-12-02T16:34:21Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == December 02 2009 seminar - Theory [[Media:Mahdi_021209.pdf]] [[Media:Nils-Erik_021209.pdf‎]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 87115d4235eeae1a63f9ed5e280574f9cf291d65 997 994 2009-12-02T16:36:04Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings == * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 fc9353bd9e9222ecbd19e927efdbb573089f65ac 1000 997 2009-12-08T16:13:49Z Ato061 22 wikitext text/x-wiki == Particle Physics Group Meetings == * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] == Public Skype Chat == Public Skype Chat, connect to skype with this link http://www.skype.com/go/joinpublicchat?chat&skypename=thomas.burgess&topic=NORHEPP+Test&blob=YaJvhGj6eJo_9kzeoBjDMrDaB7dQsyE2Hs-wVrHj6iG6XhbjWxmzdVzEDcBHxTSrMIqe0VzVI8lkv8mQFgjEqjpalLsF2sQNz9qL05kC-T3wEsykVepfIH_cwoXpj3NONJOrNrnnLmdxO6jAQUuvUnIZahKJFZJ8 8c50722770970b00d7ab9f21fed966419bb97800 1037 1000 2010-01-14T15:31:22Z Tbu082 19 wikitext text/x-wiki == Particle Physics Group Meetings/Seminars == * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 90b14dff6203e05ae298ed65ca4dc62cad3e5eaa 1038 1037 2010-01-14T15:37:26Z Tbu082 19 wikitext text/x-wiki Our seminar time is wednesdays at 14:15, usually the seminars are in room 316. == Particle Physics Group Meetings/Seminars == * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] ed0bfc562dac37ed5c3bb4643cbd1233fa336ff6 1039 1038 2010-01-14T15:38:26Z Tbu082 19 wikitext text/x-wiki Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. == Particle Physics Group Meetings/Seminars == * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] a6681c2e871728d492473acfa57c43f5f34b8c89 1040 1039 2010-01-14T16:05:29Z Tbu082 19 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars == * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 184e258864ab9ed820ff853f6f9452d5fcdd467a 1041 1040 2010-01-14T16:05:59Z Tbu082 19 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars == Click the dates for seminar details (slides, etc) * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 8b5b2184f3b1408359dfd0a16605fad4399b1b10 1042 1041 2010-01-15T10:46:10Z Tbu082 19 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars == Click the dates for seminar details (slides, etc) * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] edfb1cd9460b9f941972c2f24c9f163517c5d875 1043 1042 2010-01-15T10:46:59Z Tbu082 19 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 6cad5f9e79304ca77ce188a8c487e19b467104e7 1044 1043 2010-01-15T10:47:16Z Tbu082 19 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] b28a9d3ab0942b8ab687e6975021bb302dd30c36 December 2 2009 seminar - Theory 0 269 995 2009-12-02T16:35:09Z Tbu082 19 Created page with ' == December 02 2009 seminar - Theory == * Mahdi - [[Media:Mahdi_021209.pdf]] * Nils-Erik - [[Media:Nils-Erik_021209.pdf‎]]' wikitext text/x-wiki == December 02 2009 seminar - Theory == * Mahdi - [[Media:Mahdi_021209.pdf]] * Nils-Erik - [[Media:Nils-Erik_021209.pdf‎]] f9ee38ae5b9a0db5ac87cb07605f8d073f19adc2 996 995 2009-12-02T16:35:50Z Tbu082 19 wikitext text/x-wiki * Mahdi - [[Media:Mahdi_021209.pdf]] * Nils-Erik - [[Media:Nils-Erik_021209.pdf‎]] [[ParticlePhysicsGroupMeetings|Back to meetings page]] 20bed6e1f5228cfb867590bf501786e8c0802522 998 996 2009-12-02T16:36:39Z Tbu082 19 wikitext text/x-wiki * Mahdi Purmohammadi - Natural Multi-Higgs Model with Dark Matter [[Media:Mahdi_021209.pdf]] * Nils-Erik - [[Media:Nils-Erik_021209.pdf‎]] [[ParticlePhysicsGroupMeetings|Back to meetings page]] [http://www.example.com link title] 0aab08c647cbb8a2bea5b8fbb95028766142c913 999 998 2009-12-02T16:37:00Z Tbu082 19 wikitext text/x-wiki * Mahdi Purmohammadi - Natural Multi-Higgs Model with Dark Matter [[Media:Mahdi_021209.pdf]] * Nils-Erik Bohmark - Supersymmetric theory [[Media:Nils-Erik_021209.pdf‎]] [[ParticlePhysicsGroupMeetings|Back to meetings page]] [http://www.example.com link title] 97f3372cea69e47a018089fa43f761c53e311dfb December 9 2009 seminar - Top quark charge 0 270 1001 2009-12-08T16:21:23Z Ato061 22 Created page with 'Wednesday November 25, IFT Room 316, 14:00 '''* Arshak Tonoyan - Top quark charge measurement using semileptonic B-decay''' Evo details: Title: Bergen Particle Phy...' wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 '''* Arshak Tonoyan - Top quark charge measurement using semileptonic B-decay''' Evo details: Title: Bergen Particle Physics seminar Community: ATLAS Password: IFT Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=MIM9Ms2M28DDDl9v9nDa9I (Available from 13:30) df1e67182e1cf1350032d66930cee7a91874d544 1002 1001 2009-12-08T16:32:36Z Tbu082 19 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * '''Arshak Tonoyan - Top quark charge measurement using semileptonic B-decay''' Evo details: Title: Bergen Particle Physics seminar Community: ATLAS Password: IFT Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=MIM9Ms2M28DDDl9v9nDa9I (Available from 13:30) fab148dc1ebef7a3e7ea83b33b8a79d8ad577e60 1006 1002 2009-12-09T12:21:52Z Ato061 22 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * '''Arshak Tonoyan - Top quark charge measurement using semileptonic B-decay''' Evo details: Title: Bergen Particle Physics seminar Community: ATLAS Password: IFT Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=MIM9Ms2M28DDDl9v9nDa9I (Available from 13:30) * [Arshak Tonoyan - Top quark charge measurement using semileptonic B-decay] f17fa1414ec1e3a434b3d88ed6749dd229854f64 1008 1006 2009-12-09T12:23:42Z Ato061 22 wikitext text/x-wiki Wednesday November 25, IFT Room 316, 14:00 * [https://wikihost.uib.no/ift/images/9/9f/Top_charge_Tonoyan_IFTSeminar_09Dec2009.pdf Arshak Tonoyan - Top quark charge measurement using semileptonic B-decay] Evo details: Title: Bergen Particle Physics seminar Community: ATLAS Password: IFT Meeting URL: http://evo.caltech.edu/evoGate/koala.jnlp?meeting=MIM9Ms2M28DDDl9v9nDa9I (Available from 13:30) 3c2c413175526195431dbcf386557bd2471cffe3 Particle Physics group 0 137 1003 801 2009-12-08T18:30:42Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]]=== === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] f1fb589d85a4b3773512b8e3bb7b4b405d2d3349 1004 1003 2009-12-08T18:33:17Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] === [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]]=== Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 3fcccb36b86e798b524849801face6a8b549cd38 1009 1004 2009-12-09T16:36:53Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] === [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]]=== Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 7aaefcf87644ed631e3d05e5592e4a443ffaba28 1045 1009 2010-01-15T10:50:26Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[StGenisAppt|St Genis Appartment]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] === [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]]=== Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] c314c405c6a1b33524427f13787701b631080bef 1047 1045 2010-01-15T13:51:36Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] === [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]]=== Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 6081efe8ea138854025f82490bd78d7a5904d1f5 1048 1047 2010-01-15T13:56:53Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasNordugrid|Nordugrid]] * [[AtlasDPDTutorial| DPD tutorial]] === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 9d7f3d798634e88770793b88a695cda98e42da8a 1050 1048 2010-01-15T14:00:53Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|ATLAS Outreach]] === === ATLAS Software === * [[ATLASSimulationCSCWalkThrough|Simulation using CSC scripts walkthrough]] * [[AtlasDataFormats| ATLAS data formats]] * [[AtlasKlientdriftWalkthrough|Setting up athena on managed computers]] * [[AtlasDPDTutorial| DPD tutorial]] === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 9e510b73411e41de3187eea182f4e4a58f54e1ec 1051 1050 2010-01-15T14:46:50Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[ATLASOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 6f2606bde1f1c544d94302cf9b39cec84791044a 1054 1051 2010-01-15T14:48:44Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[AtlasAnalysis|ATLAS Analysis]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 56c06955ce8440a1be8226c6456f599f6ac0b7d1 1056 1054 2010-01-15T14:57:43Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[AtlasShifts|ATLAS shifts]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 87fcd46d2674a3c32d10691ad783f5696ae93f33 Spaatind2010 0 271 1005 2009-12-08T18:38:14Z Nfyal 26 Created page with 'Here is the link to the Spaatind 2010 conference [http://indico.cern.ch/conferenceDisplay.py?confId=69125] ATLAS members and students only: Here is where you need to submit yo...' wikitext text/x-wiki Here is the link to the Spaatind 2010 conference [http://indico.cern.ch/conferenceDisplay.py?confId=69125] ATLAS members and students only: Here is where you need to submit your ATLAS plots for approval before 22 of December. [https://atlas-bergen.web.cern.ch/atlas-bergen/spaatind/pmwiki.php?n=Main.HomePage] b3013dc1d595df8b8a25b307969b46e19b01e20b File:Top charge Tonoyan IFTSeminar 09Dec2009.pdf 6 272 1007 2009-12-09T12:22:41Z Ato061 22 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Kent-Olav Skjei-MasterPresentation.pdf 6 274 1028 2009-12-12T12:14:47Z Tbu082 19 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Busy Box and related 0 3 1029 858 2009-12-14T15:47:22Z St09909 38 /* Related documents for BusyBox */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== ;Revision 31 ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] <!-- ;Revision 35 ;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V) ;:* Added "number of channels" status register. ;:* Added Stress test mode for testing only. (Disabled by default.) ;:;Download ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit] --> ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] [[Category:Alice]] [[Category:Trigger]] 437a29983c763eaef58be97e5dfcebcf647d39ec 1030 1029 2009-12-18T09:46:40Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. <!-- ;Revision 35 ;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V) ;:* Added "number of channels" status register. ;:* Added Stress test mode for testing only. (Disabled by default.) ;:;Download ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit] --> =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers]] In short: 1)Number of implemented channels. This number is actually the same as the generic g_num_channels. 2)Current Trigger Event Info 3)Current Trigger Event Error 4)Newest Trigger Event Info 5)Newest Trigger Event Error ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] [[Category:Alice]] [[Category:Trigger]] 2227eb0eb52063e77b4465bd7eb72c7c6eddc5b9 1031 1030 2009-12-18T10:42:36Z St09909 38 /* Revision 41 */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. <!-- ;Revision 35 ;:* Compiled with stricter constraints and higher effort settings (100 degrees celsius, 45 MHz, 1.14 V) ;:* Added "number of channels" status register. ;:* Added Stress test mode for testing only. (Disabled by default.) ;:;Download ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://folk.uib.no/st09909/revision35/busybox_fpga2.bit busybox_fpga2.bit] --> =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers|BusyBox Registers]] In short: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] [[Category:Alice]] [[Category:Trigger]] 82dccc690224c2ba3d8d5c02e11aa172cae40054 1032 1031 2009-12-18T10:47:03Z St09909 38 /* Compiled BusyBox Firmware Versions */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers|BusyBox Registers]] In short: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] [[Category:Alice]] [[Category:Trigger]] 97621caee97e6159a548a3fe53885a009db1959a 1033 1032 2009-12-18T14:13:40Z St09909 38 /* Related documents for BusyBox */ wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers|BusyBox Registers]] In short: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 1fc2d0bc986ceb2694cbc22119ca35af4d19be62 Detector lab 0 21 1035 910 2010-01-06T09:11:45Z Dfe002 7 /* Meetings and conferences */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * Our weekly labmeeting is Tuesdays 11:15 in room 332. * 14.01.09: MedViz annual conference - project presentations (http://www.medviz.uib.no/) * 02.01. - 08.01.10: Spåtind meeting on particle physics (http://indico.cern.ch/event/spaatind-2010) * 15.02. - 20.02.10: Vienna conference on Instrumentation - Deadline 16.11.09. (http://vci.hephy.at/2010/) * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany === For internal use === [[material]] that can be used in official presentations. c61c223ce2938d0951ab1850e826e3d052d5ebbf HEPOutreach 0 225 1052 767 2010-01-15T14:47:59Z Pro027 29 moved [[ATLASOutreach]] to [[HEPOutreach]] wikitext text/x-wiki == ATLAS outreach == === Talks === === Images === === Links === 8a7822700f05cb630d09da1d418f491af49044b0 1055 1052 2010-01-15T14:49:02Z Pro027 29 wikitext text/x-wiki == HEP outreach == === Talks === === Images === === Links === 7f1093cfc56767d49fdc2a5e84442485879d1ecd Particle Physics group 0 137 1057 1056 2010-01-15T15:05:51Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [http://atlas.web.cern.ch/Atlas/GROUPS/GENERAL/SCINOTES/pub_templates.html ATLAS ROOT and paper templates] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] d081b2561a15186e4e0dff2a16bf7766b36b3f8a 1058 1057 2010-01-15T15:10:11Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASEarlyData|ATLAS Early Data]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 5a55c86c76a446a654fc668666e024478ac51283 1059 1058 2010-01-15T15:12:38Z Pro027 29 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[AtlasSafety|Safety training for ATLAS work]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] d4b37132ee754eb2f8e5150e87b0745230a198d3 1060 1059 2010-01-15T16:20:10Z Ato061 22 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] A calendar for ATLAS is available [[http://www.google.com/calendar/embed?src=vu2co93q6o23ru0mok01ujqavk%40group.calendar.google.com&ctz=Europe/Stockholm|at google calendar]] If you have a gmail account you can be granted edit access to this calendar... To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 2f606b4b65b093f77d7d2aa6737e28c87c566127 1061 1060 2010-01-27T10:39:07Z Tbu082 19 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 97446d8e531ef3f754d4c61680568ff06a839a15 Modelsim/Questa 0 33 1062 350 2010-02-01T11:54:48Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /prog/altera/vhdl/apex20ke [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[Category:Mikroelektronikk]] d10447875b77830b9ad1572127f214431d2a1b51 1063 1062 2010-02-01T11:55:19Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /prog/altera/vhdl/apex20ke [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[Category:Mikroelektronikk]] 9f3e71d9041eb70f781a30a9d4e934c42c5558f4 1065 1063 2010-02-01T12:41:31Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: * vmap apex20ke /prog/altera/vhdl/apex20ke [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[Category:Mikroelektronikk]] 6f5917343c5b2cc2dfbaf3f5b637d03e2fe6ea0a 1097 1065 2010-02-15T11:02:51Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap apex20ke /prog/altera/vhdl/apex20ke vmap lpm /prog/altera/vhdl/lpm vmap altera_mf /prog/altera/vhdl/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[Category:Mikroelektronikk]] bf64728ab8414bdc879bb25977aa9738c74f327b 1100 1097 2010-02-15T12:42:47Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[Category:Mikroelektronikk]] 024f97dc2c7c27ffcf31dd8a1d13b9979d0a4368 1102 1100 2010-02-16T08:28:37Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[http://www.edn.com/contents/images/46098.pdf 10 tips for generating reusable VHDL]] [[Category:Mikroelektronikk]] 57050db84442472b2e05c797e52847be8e9ade40 1103 1102 2010-02-17T09:13:15Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[http://www.edn.com/contents/images/46098.pdf 10 tips for generating reusable VHDL]] [[http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems]] [[Category:Mikroelektronikk]] e0a7eb5ad394e7d88c32201adab624e5784a57d4 1104 1103 2010-02-17T09:15:50Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[http://www.edn.com/contents/images/46098.pdf 10 tips for generating reusable VHDL]] [[Category:Mikroelektronikk]] 57050db84442472b2e05c797e52847be8e9ade40 Synthese av VHDL 0 36 1064 394 2010-02-01T11:59:36Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen). Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/altera8.0 </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/simulation/modelsim/prosjektnavn.vho' (i vårt tilfelle 'alu/add_sub_alu_temp_1/simulation/modelsim/add_sub_alu.vho'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). ''NB. Simulatoren feilar hvis vi har beheld entity deklarasjonen i begge filane som skal inkluderast i testbenken. Dette kan vi løyse enten ved å ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, eller ved å fjerne enitity deklarasjonen i den opprinnelige koden.'' ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 91877a63f4dff44cdc15201051e2b990908a193a 1094 1064 2010-02-14T16:22:54Z Ave082 33 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Sett opp lisensen i Quartus ved å starte Quartus, og velg menyen Precision er eit program som bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/altera8.0 </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). ''NB. Simulatoren feilar hvis vi har beheld entity deklarasjonen i begge filane som skal inkluderast i testbenken. Dette kan vi løyse enten ved å ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, eller ved å fjerne enitity deklarasjonen i den opprinnelige koden.'' ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 672d8e42ff6cc71f474b3b23fd47d7407e24586d 1096 1094 2010-02-15T09:52:04Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens(i vårt tilfelle valgte vi Altera APEX 20KE med frekvens 200MHz). For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/altera9.1/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). ''NB. Simulatoren feilar hvis vi har beheld entity deklarasjonen i begge filane som skal inkluderast i testbenken. Dette kan vi løyse enten ved å ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, eller ved å fjerne enitity deklarasjonen i den opprinnelige koden.'' ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] d3352d1d8cd54c1340ab45d0d0c1ddd6279f871a 1098 1096 2010-02-15T12:06:54Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone III med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/altera9.1/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Legg til mapping av alterabiblioteket vmap apex20ke /prog/altera/vhdl/apex20ke Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). ''NB. Simulatoren feilar hvis vi har beheld entity deklarasjonen i begge filane som skal inkluderast i testbenken. Dette kan vi løyse enten ved å ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, eller ved å fjerne enitity deklarasjonen i den opprinnelige koden.'' ==Simulering med timing== <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 15fc3ad7004a5eb31520872f6438f36b3c1d1253 1099 1098 2010-02-15T12:41:01Z Nfyku 4 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone III med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/altera9.1/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii </pre> Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). ''NB. Simulatoren feilar hvis vi har beheld entity deklarasjonen i begge filane som skal inkluderast i testbenken. Dette kan vi løyse enten ved å ha ulike entitynavn på den synthesiserte og opprinnlige komponenten, eller ved å fjerne enitity deklarasjonen i den opprinnelige koden.'' ==Simulering med timing== Eksemple på start av simulering med timing: <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] f13f3be1cc8ff459070f260ae536177d858ac6a1 1101 1099 2010-02-15T22:48:16Z Ave082 33 wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone III med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/altera9.1/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii </pre> Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk = '1' AND clk'LAST_VALUE = '0') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk = '1' AND clk'LAST_VALUE = '0') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= null; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '0', '1' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] d0dfde8fdb2486620a22199d176fae0698306ddf Microelectronics group 0 25 1066 653 2010-02-01T13:21:13Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Øvingsoppgaver i PHYS321 [[Category:Mikroelektronikk]] 73939543f171eeaae4533c8a98e8b2ee44ca8514 1107 1066 2010-02-17T09:18:32Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 [[Category:Mikroelektronikk]] 461e8157ec086ce71614bf871abb41ed91457f4d Busy Box and related 0 3 1067 1033 2010-02-04T09:58:29Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 47===== ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] a525533763a6170a51f6edf28b48a656ef1d8230 1072 1067 2010-02-04T15:24:37Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] d90d94050c8caae7879e6c67619273f2456d1b5c Busy Box and related/BusyBox Registers 0 242 1068 967 2010-02-04T10:11:44Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Contol Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 47 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 298de2eeb4cfea5b9309aa0a7007e32bcdd7e37b 1069 1068 2010-02-04T10:45:10Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 48 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 1ccc486bf54a9201398fc95f88ad836feca66090 1070 1069 2010-02-04T10:47:22Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 11:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 48 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 30bf07d1fca1d7b031fbafb182df7b42c3d959bb 1071 1070 2010-02-04T13:55:33Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 48 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 93eb51493cf31c89c3a0469dd9471b0d37c823a3 IC Station 0 31 1073 94 2010-02-07T13:37:10Z Ave082 33 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC station er startet fra "IC studio", http://doc.uib.no/wiki/ICStudio. ==Create cell== Etter at skjemaet er laget går du ut igjen i prosjekt vinduet, velger prosjektet ditt og høyreklikker i den blå Cell-view ruten og velger create new view. Sett "View Type" til Layout og trykk finish. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 72810bce9593baca2ab028f105a61c38fbd11ddf 1083 1073 2010-02-08T11:07:05Z Ave082 33 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC studio er startet, se [https://wikihost.uib.no/ift/index.php/IC_studio IC studio]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 894720d1738637c3a200b12e680d935f05aa35ce 1084 1083 2010-02-08T11:08:03Z Ave082 33 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: <br/> * DRC (Design rule check) <br/> * LVS (Layout versus schematic test) <br/> * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 <pre>file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html</pre> Vi antar nå at IC studio er startet, se [https://wikihost.uib.no/ift/index.php/IC_studio IC studio]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 509d8ada3d3173fb333e3015c144fb9b4994a693 1085 1084 2010-02-08T11:08:44Z Ave082 33 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: * DRC (Design rule check) * LVS (Layout versus schematic test) * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 <pre>file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html</pre> Vi antar nå at IC studio er startet, se [https://wikihost.uib.no/ift/index.php/IC_studio IC studio]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. e22dcf84798d28035fc1e36010983ff82d41e67d 1086 1085 2010-02-08T11:09:36Z Ave082 33 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: * DRC (Design rule check) * LVS (Layout versus schematic test) * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC studio er startet, se [https://wikihost.uib.no/ift/index.php/IC_studio IC studio]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de *design rules* som gjelder for prosessen. DRC sjekker *ikke* om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg *ICrules* --> *Check*. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg *Options...* og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg *OK* begge steder for å kjøre DRC. Bruk så knappene *First* og *Next* for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under *Options...* trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg *File* --> *Logic* --> *Close*. Fra paletten: Velg *ICtrace(M)* <br/> Klikk på *SETUP* (den blå knappen). [[Image:lvs_setup_button.png]] Klikk på *LVS* og fyll ut dialogboksen tilsvarende figuren under. [[Image:lvs_2.png]] Trykk på knappen *Setup LVS...* <br/> Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da vi klikket på den blå setup-knappen. [[Image:lvs_setup_2.png]] Klikk *OK* begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg *Logic* --> *Open*, og angi stien til viewpointet (samme som *Source Name* i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg *ICextract (M)* <br/> Lukk eventuelle åpne *logic*. <br/> Klikk *Lumped* og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk *Lib/Temp/Inc* og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg *Annotations --> Merge all* <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 31e4fbc668e88e78de47687e5fe5603a8782728a Tutorials 0 105 1074 920 2010-02-08T09:32:10Z Ave082 33 wikitext text/x-wiki [http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow] [http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial] [http://pages.cs.wisc.edu/~david/courses/cs755/cs755/ VLSI System Design course with tutorials] [http://www.swarthmore.edu/NatSci/tali/E77/Mentor_Tutorials/tutorials.htm Mentor Graphic Tutorials] [http://www.ele.uri.edu/Research/cherry/mentor_tutorial/index.html Mentor Graphics IC Layout & Verification Tutorial] [http://vlsi.ee.hacettepe.edu.tr/tutorials/tutorial_yildirim/tutorial.htm ASIC Design Flow Tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_1.pdf Design arcithect tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_2.pdf IC studio tutorial] [http://people.ee.duke.edu/~jmorizio/ece261/LABMANUALS/ Mentor tutorials relativt oppdaterte] [[Category:Mikroelektronikk]] 7df8519ed80d25f04e108cd76a8750f813e077b2 IC studio 0 28 1075 939 2010-02-08T09:49:37Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. Om du ønsker å bruke Mentor programmene fra en Windows pc så se denne forklaringen [[Mentor i windows]] ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". 062d723039b8c4cf70efa4931cb8652e4140553b 1080 1075 2010-02-08T10:18:48Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. Om du ønsker å bruke Mentor programmene fra en Windows pc så se denne forklaringen [[Mentor i Windows]] ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. ==Bruk av IC station== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og Schematic under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. Her finner du en kort innføring i tegning av utlegg med "IC station", [[ICStation]] = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". fef7fd690f191c388bc557dc9cbc315c3d84e71d 1082 1080 2010-02-08T10:21:59Z Ave082 33 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. Om du ønsker å bruke Mentor programmene fra en Windows pc så se denne forklaringen [[Mentor i Windows]] ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". 242ed190f4be94d0ad14910c0b3455f9e5486ac5 Xming 0 276 1076 2010-02-08T10:12:46Z Ave082 33 Created page with 'Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] Lagre Putty på skrivebordet eller lignend...' wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] Lagre Putty på skrivebordet eller lignende og start det. På "Host Name" skal det stå portal1.ift.uib.no På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn <pre> +bs -wm -emulate3buttons -fp tcp/localhost:7100 </pre> etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hviss programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. 1a83b49266ffa6ab3323282f4c081c2a64276f40 1077 1076 2010-02-08T10:13:16Z Ave082 33 wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] Lagre Putty på skrivebordet eller lignende og start det. På "Host Name" skal det stå portal1.ift.uib.no På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn <pre> +bs -wm -emulate3buttons -fp tcp/localhost:7100 </pre> etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hviss programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. 24b82ace16dd75c61efd8708decff6ec0caa6420 1078 1077 2010-02-08T10:14:30Z Ave082 33 wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] Lagre Putty på skrivebordet eller lignende og start det. På "Host Name" skal det stå portal1.ift.uib.no På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn <pre> +bs -wm -emulate3buttons -fp tcp/localhost:7100 </pre> etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hviss programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. 8060ae1a6cd392933a487a850c7f09da8341c29d 1079 1078 2010-02-08T10:15:54Z Ave082 33 wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] Lagre Putty på skrivebordet eller lignende og start det. På "Host Name" skal det stå portal1.ift.uib.no På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn <pre> +bs -wm -emulate3buttons -fp tcp/localhost:7100 </pre> etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hvis programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. 7683cb4b3852900a483917667df968d50e165f6d Simulering av VHDL 0 34 1087 201 2010-02-08T20:24:04Z Ave082 33 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa== Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando i et terminalvindu og start deretter et nytt skall. <pre> ssh -X mikroserver1 /prog/design_kits/micro.init.csh eller /prog/design_kits/micro.init.bash </pre> Senere skriver man følgende i et teminalvindu: <pre> ssh -X mikroserver1 mentor questa </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs eller den innebygde teksteditoren i Questa. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Signals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Variables for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] d5f7ab844b789fe113b36b6b2badcfc91cb55c8c 1088 1087 2010-02-09T07:47:11Z Ave082 33 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa== Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando i et terminalvindu og start deretter et nytt skall. <pre> ssh -X mikroserver1 /prog/design_kits/micro.init.csh eller /prog/design_kits/micro.init.bash </pre> Senere skriver man følgende i et teminalvindu: <pre> ssh -X mikroserver1 mentor questa </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs eller den innebygde teksteditoren i Questa. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Wave Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Objects for å kikke på innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] 21772ec932ac4c266710cfd10b3a808d0d83e484 1089 1088 2010-02-10T11:14:39Z Ave082 33 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa== Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando i et terminalvindu og start deretter et nytt skall. <pre> ssh -X mikroserver1 /prog/design_kits/micro.init.csh eller /prog/design_kits/micro.init.bash </pre> Senere skriver man følgende i et teminalvindu: <pre> ssh -X mikroserver1 mentor questa </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs eller den innebygde teksteditoren i Questa. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Før man kan kompilere koden må man sette mappen man ønsker at biblioteket av de kompilerte kodene skal ligge. Dette kan gjøres med: <pre> vlib work </pre> Mappen work blir da bibliotekmappen. Kommandoen (aliaset) ''mentor'' sørger for velge riktige stier og miljøvariable. Når dette er gjort kompileres koden ved <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil disse listes opp. Feilmeldingen har en henvisning til linjenummer, som kan brukes til å lokalisere feilen i teksteditoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Source * View > Wave Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] ed76b6ac82aef2503c56eb93d3a997518211254f 1095 1089 2010-02-14T19:18:44Z Ave082 33 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa== Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando i et terminalvindu og start deretter et nytt skall. <pre> ssh -X mikroserver1 /prog/design_kits/micro.init.csh eller /prog/design_kits/micro.init.bash </pre> Senere skriver man følgende i et teminalvindu: <pre> ssh -X mikroserver2 mentor questa </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] 762ee28b226b9f97921e6fdf1da24ad80950fb91 VHDL Testbenk 0 35 1090 68 2010-02-10T11:16:00Z Ave082 33 wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscilliasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. fdb6beb7587e8e70cefb483fc238914f702842dc 1091 1090 2010-02-10T11:16:49Z Ave082 33 wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscilliasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. 09df084b7fdc0ee4f8747852c0b3c4953f52a570 1092 1091 2010-02-10T11:55:41Z Ave082 33 wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscilliasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. fb07e73ed90f53aa91aff3f24d63550571bc0796 1093 1092 2010-02-10T12:05:03Z Ave082 33 wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscilliasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> Om en legger til testbenk signalene i wave vinduet så får en opp markeringer der hvor det har oppstått feil, rød for error og gul for warning. En kan så trykke på markeringene og få opp feilmeldingen. ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. cceccc546b87fbba41afc757168d40676ba32ca3 Øvingsoppgaver PHYS321 0 169 1105 468 2010-02-17T09:17:54Z Nfyku 4 moved [[PHYS321]] to [[Øvingsoppgaver PHYS321]] wikitext text/x-wiki == Øvingsoppgaver PHYS321 == === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC_studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. [[Category:Mikroelektronikk]] de4199254dc8d8b165f9e829fc8bd537bcb66eac PHYS321 0 278 1106 2010-02-17T09:17:54Z Nfyku 4 moved [[PHYS321]] to [[Øvingsoppgaver PHYS321]] wikitext text/x-wiki #REDIRECT [[Øvingsoppgaver PHYS321]] c796f4400ddfaf3e23df76087ae265a1591eab75 PHYS321 0 278 1108 1106 2010-02-17T09:35:18Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Nettressurser === [[http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems]] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] d29dc377ceadb27a1fd4e95ce3505fb186a8426b Øvingsoppgaver PHYS321 0 169 1109 1105 2010-02-17T09:36:51Z Nfyku 4 wikitext text/x-wiki === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC_studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. === VHDL === Utfyllende tekst kommer [[Category:Mikroelektronikk]] 262f843d865a30cfe0feb9cdb71d06f4a8117bf4 Xming 0 276 1110 1079 2010-02-17T09:38:06Z Nfyku 4 Protected "[[Mentor i windows]]" ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite)) wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] Lagre Putty på skrivebordet eller lignende og start det. På "Host Name" skal det stå portal1.ift.uib.no På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn <pre> +bs -wm -emulate3buttons -fp tcp/localhost:7100 </pre> etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hvis programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. 7683cb4b3852900a483917667df968d50e165f6d 1132 1110 2010-02-18T12:05:42Z Nfyku 4 Unprotected "[[Mentor i windows]]" wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] Lagre Putty på skrivebordet eller lignende og start det. På "Host Name" skal det stå portal1.ift.uib.no På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn <pre> +bs -wm -emulate3buttons -fp tcp/localhost:7100 </pre> etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hvis programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. 7683cb4b3852900a483917667df968d50e165f6d 1133 1132 2010-02-18T12:09:57Z Nfyku 4 wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] ==Koble til mikroserver2 med tunnel gjennom portal1== # Lagre Putty på skrivebordet eller lignende og start det. # På "Host Name" skal det stå portal1.ift.uib.no # På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" # Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". # Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. # Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. # Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. ==Starte grafisk grensensnitt== Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn +bs -wm -emulate3buttons -fp tcp/localhost:7100 etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hvis programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. [[Category:Mikroelektronikk]] 32c88e6759c28605d7c0a6d87ddc29ef72909ca7 1134 1133 2010-02-18T12:10:57Z Nfyku 4 moved [[Mentor i windows]] to [[Xming]] wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] ==Koble til mikroserver2 med tunnel gjennom portal1== # Lagre Putty på skrivebordet eller lignende og start det. # På "Host Name" skal det stå portal1.ift.uib.no # På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" # Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". # Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. # Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. # Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. ==Starte grafisk grensensnitt== Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn +bs -wm -emulate3buttons -fp tcp/localhost:7100 etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hvis programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. [[Category:Mikroelektronikk]] 32c88e6759c28605d7c0a6d87ddc29ef72909ca7 1137 1134 2010-02-18T12:12:53Z Nfyku 4 wikitext text/x-wiki Programmer som trengs: [http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe Putty] [http://sourceforge.net/projects/xming/ Xming] ==Koble til server med tunnel gjennom portal-maskin== # Lagre Putty på skrivebordet eller lignende og start det. # På "Host Name" skal det stå portal1.ift.uib.no # På venstre side så trykker du på "Keyboard" og haker av for "Control-H" under "The Backspace Key" # Lengre nede i menyen på venstre side så utvider du SSH og trykker på Auth, merk av for "Allow agent forwarding". # Trykk deretter på X11 på menyen til venstre og hak av for "Enable X11 forwarding" og skriver localhost:0 i "X display location ruten. # Trykk så på Tunnels i menyen til venstre og skriv 7100 i "Source port" og mikroserver2:7100 i "Destination". Trykk så på Add. # Velg så Session i menyen til venstre igjen og skriv inn ett navn til koblingen din i "Saved Session" fex uib og trykk på save. ==Starte grafisk grensensnitt== Installer så Xming, trykk neste på de fleste menyene men på nest siste elns så haker du av for å legge en snarvei til xming på skrivebordet. Når det er ferdig installert så høyreklikker du på snarveien på skrivebordet og skriver inn +bs -wm -emulate3buttons -fp tcp/localhost:7100 etter det som står i "Mål" ruten. Når du så skal starte så er det bare å åpne putty, trykke load på koblingen du lagret og trykk open. Tast inn brukernavn og passord, samme som på mikroserver2. Når du er logget inn skriver du <pre>ssh -X mikroserver2</pre> og skriver passord på nytt. Så starter du Xming programmet fra snarveien, hvis programmet allerede kjører så må du lukke det ved å høyreklikke på ikonet i systemtray og velg exit først. Dernest kan du starte programmet du vil. [[Category:Mikroelektronikk]] 52901c365fe8ef885edb2ea230eac64c9cf6be3c Microelectronics group 0 25 1111 1107 2010-02-17T10:03:03Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare [[Category:Mikroelektronikk]] 091d37ed8d11ce006fe1c5860b39132a9c0bcb58 Teknisk hjelp 0 279 1112 2010-02-17T10:03:55Z Nfyku 4 Created page with '[[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[Category:Mikroelektronikk]]' wikitext text/x-wiki [[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[Category:Mikroelektronikk]] 2659e20baa9fedcc5a072a57b3416109e4781ef3 1120 1112 2010-02-17T10:28:39Z Nfyku 4 wikitext text/x-wiki [[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[SSH Innlogging]] Hvordan logge inn med ssh fra Windows-PC [[Category:Mikroelektronikk]] c1db41197c3cb01b5ca5ae6ebcf0a629da47fd32 1121 1120 2010-02-17T10:29:15Z Nfyku 4 wikitext text/x-wiki [[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[SSH innlogging]] Hvordan logge inn med ssh fra Windows-PC [[Category:Mikroelektronikk]] 8912828ec1976565d357343dec78c6d3123f8bf1 1136 1121 2010-02-18T12:12:14Z Nfyku 4 wikitext text/x-wiki [[SSH innlogging]] Hvordan logge inn med ssh fra remote Windows-PC [[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[Xming]] Hvordan bruke Xming for å logge inn fra remote Windows-PC [[Category:Mikroelektronikk]] 347a761fc13567fac4b5ae6f99ee79f98bd97c8b 1139 1136 2010-02-19T11:46:14Z Nfyku 4 wikitext text/x-wiki [[SSH innlogging]] Hvordan logge inn med ssh fra remote Windows-PC [[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[Xming]] Hvordan bruke Xming for å logge inn fra remote Windows-PC [[http://www.msc.rl.ac.uk/europractice/software/mentor.html Europractice Mentor Graphics Software Overview]] [[http://www.msc.rl.ac.uk/europractice/software/cadence.html Europractice Cadence Software Overview]] [[Category:Mikroelektronikk]] 753f249ae247f6cab5a60a10be63d122f2813130 VNC 0 280 1113 2010-02-17T10:11:06Z Nfyku 4 Created page with '==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan ...' wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om SSH innloging). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024×768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280×1024 kan du prøve med en VNC desktop på 1262×947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: * vncserver -geometry 1006×701 * vncserver -geometry 1262×947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot din VNC server når du ikke er på universitetet, les VNC-SSH innlogging ===Logout fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt desktop nummeret Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. [[Category:Mikroelektronikk]] 0702d1be2bc282903c6b88de982bec83c2fb8954 1114 1113 2010-02-17T10:12:54Z Nfyku 4 wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om [[SSH innloging]]). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024×768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280×1024 kan du prøve med en VNC desktop på 1262×947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: * vncserver -geometry 1006×701 * vncserver -geometry 1262×947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot din VNC server når du ikke er på universitetet, les VNC-SSH innlogging ===Logout fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt desktop nummeret Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. [[Category:Mikroelektronikk]] ef95e47c92567e21db3ed345d34a73a391b53605 1124 1114 2010-02-17T10:31:44Z Nfyku 4 wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om [[SSH innlogging]]). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024×768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280×1024 kan du prøve med en VNC desktop på 1262×947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: * vncserver -geometry 1006×701 * vncserver -geometry 1262×947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot din VNC server når du ikke er på universitetet, les VNC-SSH innlogging ===Logout fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt desktop nummeret Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. [[Category:Mikroelektronikk]] f63b726b539080174163e7f9021c8bd437e67f3a 1125 1124 2010-02-17T10:38:33Z Nfyku 4 wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om [[SSH innlogging]]). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024×768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280×1024 kan du prøve med en VNC desktop på 1262×947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: * vncserver -geometry 1006×701 * vncserver -geometry 1262×947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot VNC serveren når du ikke er på universitetet, les [[SSH tunnel]] ===Logout fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt desktop nummeret Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. [[Category:Mikroelektronikk]] 681cd84434e6bf418bc4a9939dd69c52a87974fe 1142 1125 2010-02-22T18:53:48Z Ave082 33 wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om [[SSH innlogging]]). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024x768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280x1024 kan du prøve med en VNC desktop på 1262x947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: * vncserver -geometry 1006x701 * vncserver -geometry 1262x947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot VNC serveren når du ikke er på universitetet, les [[SSH tunnel]] ===Logout fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt desktop nummeret Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. [[Category:Mikroelektronikk]] 1f296d926add648e653ee33311a82c9fe129b4af 1143 1142 2010-02-22T21:33:26Z Ave082 33 wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om [[SSH innlogging]]). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024x768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280x1024 kan du prøve med en VNC desktop på 1262x947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: * vncserver -geometry 1006x701 * vncserver -geometry 1262x947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot VNC serveren når du ikke er på universitetet, les [[SSH tunnel]] ===Logout fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt desktop nummeret Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. ====Skifte window manager==== Kontoen er default satt opp til å bruke en enkel resursbesparende window manager, dvs programmet som viser alle vinduene dine. Dette kan være greit om du sitter på en internett linje med lav kapasitet, men den kan bli litt vanskelig å jobbe med. Om du vil ha en fullverdig window manager så må du redigere filen xstartup nano ~/.vnc/xstartup Fjern # tegnet foran linje 4 og 5 Trykk Ctrl-x deretter j og deretter enter og så må du starte vnc serveren på nytt. [[Category:Mikroelektronikk]] 4521b548a54c3643949643ecb3c47b99e5972d4d 1144 1143 2010-02-22T21:34:44Z Ave082 33 wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om [[SSH innlogging]]). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024x768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280x1024 kan du prøve med en VNC desktop på 1262x947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: * vncserver -geometry 1006x701 * vncserver -geometry 1262x947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot VNC serveren når du ikke er på universitetet, les [[SSH tunnel]] ===Logout fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt desktop nummeret Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. ===Skifte window manager=== Kontoen er default satt opp til å bruke en enkel resursbesparende window manager, dvs programmet som viser alle vinduene dine. Dette kan være greit om du sitter på en internett linje med lav kapasitet, men den kan bli litt vanskelig å jobbe med. Om du vil ha en fullverdig window manager så må du redigere filen xstartup nano ~/.vnc/xstartup Fjern # tegnet foran linje 4 og 5. Trykk Ctrl-x deretter j og deretter enter og så må du starte vnc serveren på nytt. [[Category:Mikroelektronikk]] 11021f371b63da0e7ff97b666fbaa014f068a54d 1145 1144 2010-02-23T08:22:04Z Nfyku 4 wikitext text/x-wiki ==VNC-innlogging mot server== Du kan koble til og fra din egen VNC server så ofte du vil. Desktopen blir bevart nøyaktig slik du forlot den.Du bør ha forståelse for hvordan du kan liste ut og rydde opp i egne prosesser. Det som er største forskjellen i forhold til enkel VNC innlogging er at du først må starte opp en VNC server på den maskinen du velger å bruke. ===SSH til server=== Start et SSH vindu og SSH til mikroserver2.ift.uib.no, eller til en annen server (les om [[SSH innlogging]]). ===Start egen VNC server=== Start din egen VNC server, dette blir en virtuell desktop (nesten en virtuel GNU/Linux-arbeidsstasjon) som du kan koble til og fra uten at programmene i den virtuelle desktoppen avsluttes ! Du bestemmer selv dimensjonen på VNC desktopen, for de som kjører en windows oppløsning på 1024x768 vil en VNC desktop på 1006×701 passe bra, det gir plass til windows start linja, samt windows ramme og knapper på VNC vinduet. Kjører du med 1280x1024 kan du prøve med en VNC desktop på 1262x947. Får du scroll-bar’s på VNC vinduet, har du valgt for stor VNC-desktop, avslutt da VNC-serveren (se hvordan under) og prøv igjen med en mindre desktop. Start din egen vncserveren med en av følgende kommandoer, eller velg din egen desktop størrelse: vncserver -geometry 1006x701 vncserver -geometry 1262x947 Oppgi et passord, være sikkerhetsbevist og velg et godt passord men ikke så godt at du må skrive det ned. Du kan senere endre passordet med kommandoen vncpasswd Merk at du kun skal starte max en stk VNC server på max en Unix-server (du må aldri kjøre vncserver kommandoen flere ganger etter hverandre!). Om du f.eks. ønsker å endre størrelsen på desktop, skal du først stoppe den serveren du har, før du starter en ny VNC server – les nedenfor hvordan du stopper en eksisterende VNC server. Når VNC serveren starter vil den prøve display nummer 4,5,6.. osv. til den finner et som ikke er i bruk. Når det er funnet opprettes en ny VNC desktop New 'mikroserver2.ift.uib.no:6 (kjetil)' desktop is mikroserver2.ift.uib.no:6 Noter deg servernavnet (her mikroserver2.ift.uib.no) og desktop nummeret (her 6). Når VNC serveren har startet kan du logget ut fra SSH (les om det i SSH innloging). ===Login mot VNC server=== Merk at dette kun kan gjøres fra Institutt for Fysikk og Teknologis nettverk, er du på utsiden, må du kjøre VNC via en SSH-tunnel. Om du ikke allerede har installer VNC Viewer, installer og start Viewer’en som forklart under Metode 1. I Server: feltet skriver du inn adressen til din egen VNC server (i eksempelet over var det mikroserver2.ift.uib.no:6) og click OK så skal du taste inn passordet du gav når du startet VNC Serveren. Det var det, nå er du inlogget på din virtuelle desktop og kan trygt lukke windows VNC Viewer vinduet uten at du mister noe. Om du ønsker å koble deg opp mot VNC serveren når du ikke er på universitetet, les [[SSH tunnel]] ===Logge ut fra VNC server=== ====Avslutte for dagen==== Om du bare skal avslutte for dagen og har tenkt å forsette i morgen, da lukker du bare VNC Viewer vinduet ved å klikke på X oppe i høyre hjørne (raskt og brutalt). Din virtuelle desktop vil fortsatt eksistere på serveren og er klar for på-logging (tilkobling) ====Avslutte og stoppe VNC serveren==== Om du vil stoppe og starte VNC serveren på ny (f.eks. med en annen desktop størrelse) eller om du ikke skal bruke VNC serveren din på en stund, bør du stoppe serveren for å spare ressurser (som memory og cpu). Først stopper du dine programmer, koble deg opp mot din VNC server (som forklart ovenfor), avslutte alle aktive program og logge ut, velge Log Out under Desktop menyen. Lukk deretter VNC Viewer vinduet med X oppe i høyre hjørne. Så må du avslutte selve VNC serveren, SSH inn på serveren (maskinen du kjører VNC serveren på) og kjøre kommandoen vncserver -kill :ditt_desktop_nummer Om du ikke husker ditt desktop nummer kan du kjøre følgende kommando for å liste ut VNC server prosessen din (merk at det kun skal komme opp en Xvnc prosess, kommer det flere har du startet Xvnc-serveren mer enn en gang og det skal man ikke gjøre…) ps -fu $USER | grep Xvnc | grep -v grep | cut -c1-84 Dessverre så kan det henge igjen noen prosesser, og siden slike kan bruke mye minne og/eller cpu, er det viktig å sjekke at alle dine prosesser virkelig er fjernet og at du ikke har noen løpske eller glemte prosesser. Når VNC serveren din er stoppet og alle prosessene dine er fjernet, kan du starte ny VNC server, om du ønsker det. ===Skifte window manager=== Kontoen er default satt opp til å bruke en enkel ressursbesparende window manager, dvs programmet som viser alle vinduene dine. Dette kan være greit om du sitter på en internett linje med lav kapasitet, men den kan bli litt vanskelig å jobbe med. Om du vil ha en fullverdig window manager så må du redigere filen xstartup nano ~/.vnc/xstartup Fjern # tegnet foran linje 4 og 5. Trykk Ctrl-x deretter j og deretter enter og så må du starte vnc serveren på nytt. [[Category:Mikroelektronikk]] c0d87bfce57997fe5382a5f4f3829f1af3fc6661 SSH innlogging 0 281 1115 2010-02-17T10:18:33Z Nfyku 4 Created page with '==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tek...' wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk WinX eller VNC for kjøre grafiske programmer. ===Installering=== Hent og installer SSH (lagre på desktop og kjør). Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[http://bs.uib.no/]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] eb43b9c1ec65960a25c0291b937872dc4ddeb4a4 1116 1115 2010-02-17T10:18:59Z Nfyku 4 Protected "[[SSH innloging]]" ([edit=autoconfirmed] (indefinite) [move=autoconfirmed] (indefinite)) wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk WinX eller VNC for kjøre grafiske programmer. ===Installering=== Hent og installer SSH (lagre på desktop og kjør). Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[http://bs.uib.no/]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] eb43b9c1ec65960a25c0291b937872dc4ddeb4a4 1117 1116 2010-02-17T10:19:33Z Nfyku 4 Unprotected "[[SSH innloging]]" wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk WinX eller VNC for kjøre grafiske programmer. ===Installering=== Hent og installer SSH (lagre på desktop og kjør). Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[http://bs.uib.no/]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] eb43b9c1ec65960a25c0291b937872dc4ddeb4a4 1118 1117 2010-02-17T10:26:11Z Nfyku 4 wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk WinX eller VNC for kjøre grafiske programmer. ===Installering=== Hent og installer [[http://it.uib.no/?link_id=1530&sublink_id=2469&content_id=3726&modus=vis_seek_resultat&prodid=105 SSH]]. Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[http://bs.uib.no/]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] 93346bd3c3e643e487a6d4d240764499dee6d073 1119 1118 2010-02-17T10:27:14Z Nfyku 4 wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk WinX eller VNC for kjøre grafiske programmer. ===Installering=== Hent og installer [[http://it.uib.no/?link_id=1530&sublink_id=2469&content_id=3726&modus=vis_seek_resultat&prodid=105 SSH]]. Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[https://bs.uib.no/?module=issues&action=new&gid=20 Brukerstøtte for IFT]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] 119a90f5ab3d12013c0b69f38388e8b6e7b43264 1122 1119 2010-02-17T10:30:52Z Nfyku 4 moved [[SSH innloging]] to [[SSH innlogging]] wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk WinX eller VNC for kjøre grafiske programmer. ===Installering=== Hent og installer [[http://it.uib.no/?link_id=1530&sublink_id=2469&content_id=3726&modus=vis_seek_resultat&prodid=105 SSH]]. Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[https://bs.uib.no/?module=issues&action=new&gid=20 Brukerstøtte for IFT]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] 119a90f5ab3d12013c0b69f38388e8b6e7b43264 1129 1122 2010-02-17T14:10:12Z Nfyku 4 wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk for eksempel WinX, [[http://www.tightvnc.com/ Tight VNC]] eller [[http://www.ii.uib.no/~bjorge/NX/ NX]] for kjøre grafiske programmer. ===Installering=== Hent og installer [[http://it.uib.no/?link_id=1530&sublink_id=2469&content_id=3726&modus=vis_seek_resultat&prodid=105 SSH]]. Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[https://bs.uib.no/?module=issues&action=new&gid=20 Brukerstøtte for IFT]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] 4a63aab97f9da360e6ae22b2fe1ef07c4ee7f3bc 1130 1129 2010-02-17T14:11:18Z Nfyku 4 wikitext text/x-wiki ==SSH innlogging fra Windows maskin til Unix maskin== SSH er en sikker og kryptert innlogging og kan benyttes både fra universitetets nettverk og fra Internett. Dette er en tekst-basert innlogging, og er kjapp og grei når man skal gjøre enkle ting, men man kan også kjøre noen større programmer som f.eks. maple og matlab (disse virker i både tekst mode og grafisk mode). Om du prøver å kjøre et grafisk (X) program, f.eks. xmaple eller xclock, vil du få en feilmelding som dette: [mikroserver2]$ matlab Error: Can’t open display: Bruk for eksempel WinX, [[http://sourceforge.net/projects/xming/ Xming]], [[http://www.tightvnc.com/ Tight VNC]] eller [[http://www.ii.uib.no/~bjorge/NX/ NX]] for kjøre grafiske programmer. ===Installering=== Hent og installer [[http://it.uib.no/?link_id=1530&sublink_id=2469&content_id=3726&modus=vis_seek_resultat&prodid=105 SSH]]. Etter installasjon har du to nye icon, på desktop, et SSH Secure Shell Client og et SSH Secure File Transfer (som brukes for overføring av filer mellom din pc og din unix-bruker). ===Login med SSH=== Bruk SSH Secure Shell Client iconet for å starte ssh, click Quick Connect, skriv inn mikroserver2.ift.uib.no (eller et annet servernavn) som Host Name og ditt Unix-brukernavn som User Name. (Port Number skal være 22.) Første gangen du ssh’er til en maskin (f.eks. mikroserver2), vil du få spørsmålet Do you want to save the new host key to the local database? Svar Yes Dersom du har ssh’et til maskinen tidligere, men nå får beskjed om at Host Identification has changed ! kan det være at maskinen har blitt oppgradert og dermed fått ny ssh-host-id (mest sannsynlig). Om maskinen ikke har blitt oppgradert – ta kontakt med [[https://bs.uib.no/?module=issues&action=new&gid=20 Brukerstøtte for IFT]]. Dersom ssh-host-id er ok, tast inn ditt passord og du vil få et shell på mikroserver2. ===Logout fra SSH=== Ikke avslutt ssh-vinduet slik du avslutter andre windows-program. For å unngå at det henger igjen prosesser på serveren, er det viktig at du bruker kommandoen logout eller tastekombinasjonen Ctrl-d i shell vinduet. Da vil du få beskjed og mulighet til å rydde opp i evtuelle prosesser som kjører i bakgrunnen. Når teksten i vindusrammen nede til venstre er Not connected – press Enter or Space to connect, kan du trygt avslutte/lukke vinduet. [[Category:Mikroelektronikk]] c4872729a69adbd5af8f836a02036689e410355f SSH tunnel 0 283 1126 2010-02-17T10:44:42Z Nfyku 4 Created page with '==VNC-SSH innlogging== ===Forberedelser=== Start først opp din egen VNC server som forklart i VNC innlogging mot egen server. ===Opprette SSH tunnel=== ====Start opp SSH Secu...' wikitext text/x-wiki ==VNC-SSH innlogging== ===Forberedelser=== Start først opp din egen VNC server som forklart i VNC innlogging mot egen server. ===Opprette SSH tunnel=== ====Start opp SSH Secure Shell==== 1. velg Profiles → Add Profile… gi den et navn f.eks. mikroserver2 2. velg Profiles → Edit Profiles…, velg mikroserver2 blant profiles i venstre felt. 3. velg Tunneling tab 1. velg Outgoing tab 1. click Add… 2. skriv inn et navn i Display Name feltet, f.eks. mikroserver2 3. pass på at Type er TCP 4. skriv inn 5900 i feltet Listen Port 5. sjekk at Allow Local Connections Only er krysset av 6. skriv inn mikroserver2.ift.uib.no i Destination Host (adressen til maskinen du kjører VNC server på) 7. skriv inn summen av 5900 og ditt desktop nummer, eks 5906, i feltet Destination Port 8. click OK 4. click OK 5. velg Profiles → portal1 6. skriv inn portal1.ift.uib.no i Host name feltet 7. skriv inn ditt unix-brukernavn i User name feltet 8. Port number skal være 22 9. la resten være som det er. 10. velg Connect 11. tast inn ditt unix-bruker passord 12. legg ned / minimize SSH vinduet, det kjører nå SSH tunnellen og må kjøre så lenge du bruke VNC Viewer via SSH. 13. når du er ferdig og har avsluttet VNC Viewer, logger du først ut fra serveren med kommandoen logout og så lukker du SSH vinduet. ====Neste gang du skal opprette SSH tunnellen==== * start SSH Secure Shell * utfør punktene fra og med punkt 6 over. ===Problemer?=== Om du får melding om at SSH tunnell ikke kunne opprettes, sjekk om du kjører VNC-server på din pc, den kan skape problemer. Login til egen VNC-SSH server Start VNC Viewer og skriv inn localhost i Server feltet og click OK og tast inn ditt vnc passord. Logout fra egen VNC-SSH server Bruk samme fremgangsmåte som forklart under Metode 2 → Logout fra egen VNC server i VNC innlogging. [[Category:Mikroelektronikk]] 6fa7e6730264e056c51ce196732ac1f679801826 1127 1126 2010-02-17T13:33:14Z Nfyku 4 wikitext text/x-wiki ==VNC-SSH innlogging== ===Opprette SSH tunnel=== # Start opp SSH Secure Shell # Velg Profiles → Add Profile… gi den et navn f.eks. "mikroserver2 via portal1" # Velg Profiles → Edit Profiles…, velg mikroserver2 blant profiles i venstre felt. # Velg Tunneling tab # Velg Outgoing tab ## Klikk Add… ## Skriv inn et navn i Display Name feltet, f.eks. mikroserver2 ## Pass på at Type er TCP ## Skriv inn 5900 i feltet Listen Port ## Sjekk at Allow Local Connections Only er krysset av ## Skriv inn mikroserver2.ift.uib.no i Destination Host (adressen til maskinen du kjører VNC server på) ## Skriv inn summen av 5900 og ditt desktop nummer, eks 5906, i feltet Destination Port ## Klikk OK # Velg Conection tab # Skriv inn portal1.ift.uib.no i Host name feltet # Skriv inn ditt unix-brukernavn i User name feltet # Port number skal være 22 # la resten være som det er. # Klikk OK (ferdig med konfigurasjon) # Velg Profiles -> "mikroserver2 via portal1" # Tast inn ditt unix-bruker passord # Legg ned / minimize SSH vinduet, det kjører nå SSH tunnellen og må kjøre så lenge du bruke VNC Viewer via SSH. # Når du er ferdig og har avsluttet VNC Viewer, logger du først ut fra serveren med kommandoen logout og så lukker du SSH vinduet. ====Neste gang du skal opprette SSH tunnellen==== # Start SSH Secure Shell # Utfør punktene fra og med punkt 6 over. ===Login til VNC-SSH server=== Start først opp din egen VNC server som forklart i VNC innlogging mot egen server, eller bruk en eksisternde VNC server. Start VNC Viewer og skriv inn localhost (ikke :port) i Server feltet og click OK og tast inn ditt vnc passord. ===Logout fra egen VNC-SSH server=== Bruk samme fremgangsmåte som forklart under Metode 2 → Logout fra egen VNC server i VNC innlogging. ===Problemer?=== Om du får melding om at SSH tunnell ikke kunne opprettes, sjekk om du kjører VNC-server på din pc, den kan skape problemer. [[Category:Mikroelektronikk]] cc36fa21f1cd7ba2df6d9376b9d239ee4e54af91 1128 1127 2010-02-17T13:34:22Z Nfyku 4 wikitext text/x-wiki ==VNC-SSH innlogging== ===Opprette SSH tunnel=== # Start opp SSH Secure Shell # Velg Profiles → Add Profile… gi den et navn f.eks. "mikroserver2 via portal1" # Velg Profiles → Edit Profiles…, velg mikroserver2 blant profiles i venstre felt. # Velg Tunneling tab # Velg Outgoing tab ## Klikk Add… ## Skriv inn et navn i Display Name feltet, f.eks. mikroserver2 ## Pass på at Type er TCP ## Skriv inn 5900 i feltet Listen Port ## Sjekk at Allow Local Connections Only er krysset av ## Skriv inn mikroserver2.ift.uib.no i Destination Host (adressen til maskinen du kjører VNC server på) ## Skriv inn summen av 5900 og ditt desktop nummer, eks 5906, i feltet Destination Port ## Klikk OK # Velg Conection tab ## Skriv inn portal1.ift.uib.no i Host name feltet ## Skriv inn ditt unix-brukernavn i User name feltet ## Port number skal være 22 ## la resten være som det er. ## Klikk OK (ferdig med konfigurasjon) # Velg Profiles -> "mikroserver2 via portal1" # Tast inn ditt unix-bruker passord # Legg ned / minimize SSH vinduet, det kjører nå SSH tunnellen og må kjøre så lenge du bruke VNC Viewer via SSH. # Når du er ferdig og har avsluttet VNC Viewer, logger du først ut fra serveren med kommandoen logout og så lukker du SSH vinduet. ====Neste gang du skal opprette SSH tunnellen==== # Start SSH Secure Shell # Utfør punktene fra og med punkt 7 over. ===Login til VNC-SSH server=== Start først opp din egen VNC server som forklart i VNC innlogging mot egen server, eller bruk en eksisternde VNC server. Start VNC Viewer og skriv inn localhost (ikke :port) i Server feltet og click OK og tast inn ditt vnc passord. ===Logout fra egen VNC-SSH server=== Bruk samme fremgangsmåte som forklart under Metode 2 → Logout fra egen VNC server i VNC innlogging. ===Problemer?=== Om du får melding om at SSH tunnell ikke kunne opprettes, sjekk om du kjører VNC-server på din pc, den kan skape problemer. [[Category:Mikroelektronikk]] d0b9b10eb462a71dc65f0226324bdbe4973fa217 Synthese av VHDL 0 36 1131 1101 2010-02-17T19:48:06Z Ave082 33 null er ikke syntetiserbar i precision, clk=1 and clk'last_value=0 syntetiseres slik at den trigger under hele den høye pulsen, enable_in må være høy for at en skal få noe ut wikitext text/x-wiki ===Synthesisering av vhdl kode=== Grunnen til at vi skal synthesisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignale frå den sythisierte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== <pre> mentor precision </pre> Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone III med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: <pre> setenv QUARTUS_ROOTDIR /prog/altera/altera9.1/quartus </pre> ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii </pre> Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: <pre> test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; </pre> Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: <pre> vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo </pre> Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 38f27ef41e3c9e3602e1d586da251ac6fa54ae44 IC studio 0 28 1138 1082 2010-02-18T14:03:41Z Nfyku 4 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. <pre> ssh -X mikroserver2 /prog/design_kits/micro.init.csh </pre> ==Starte opp IC studio== Skriv i et terminalvindu: <pre> xset +fp tcp/mikroserver2:7100 # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & </pre> Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. Om du ønsker å bruke Mentor programmene fra en Windows-PC så se på forklaringene i [[Teknisk hjelp]] ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: <pre> firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html </pre> Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: <pre> acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf </pre> ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". [[Category:Mikroelektronikk]] fd9d45ffcb23dc37414c226e5a6e492fd8be0802 Particle Physics group 0 137 1140 1061 2010-02-19T16:18:30Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] === Job openings in our group=== There is a postdoc position in our group open, watch these pages from a link to the application. More info below. There will be more positions (PhD) in the near future. * [[Post doc, spring 2010, see the link| http://web.ift.uib.no/~lipniack/jobs/bergen_16.02.10.pdf]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 3d0206c3fe31b2f50b893aa1ca135fdb76f71535 Post doc, spring 2010, see the link 0 285 1141 2010-02-19T16:20:52Z Nfyal 26 Created page with 'Postdoctoral Research Fellowship/Researcher position (Experimental Particle Physics) POSITION AS POSTDOCTORAL RESEARCH FELLOW / RESEARCHER - Experimental Particle Physics in AT...' wikitext text/x-wiki Postdoctoral Research Fellowship/Researcher position (Experimental Particle Physics) POSITION AS POSTDOCTORAL RESEARCH FELLOW / RESEARCHER - Experimental Particle Physics in ATLAS experiment at the Large Hadron Collider (LHC) is available at The Department of Physics and Technology (www.ift.uib.no), University of Bergen, in the Faculty of Mathematics and Natural Sciences. The position is funded by The Research Council of Norway under the project CERN-Related High Energy Particle Physics Research. The selected post-doc or researcher fellow is expected to work within ATLAS which is one of the experiments at CERN's "Large Hadron Collider" (LHC), and analyze the first ultra-Tev high energy collisions data to be collected starting in 2010. Present research group's activities in ATLAS include: -monitoring of the Inner Detector (ID) silicon detector system and developement of related detector-specific software -Physics analysis related to o extra symmetries (supersymmetry) o symmetry breaking (Higgs boson(s)) o top quarks and tau leptons o Black hole production o model-independent searches for new physics with mu+mu-, mu+- mu+ mu- and mu+ mu- mu+ mu- final states o detector validation studies with Z-> mu+mu-, Upsilon -> mu+ mu- and J/psi -> mu+ mu- - popularization activities (Outreach) The selected candidate is expected to be strongly analysis oriented and analyze the first data to be collected by the ATLAS detector. S/He will also take some responsibility for the operation of the Inner Detector (ID) in general and the Semi Conductor Tracker (SCT) in particular. The candidate should have or soon expected to receive PhD in particle physics. The successful candidate should have a solid background in experimental particle physics. Experience in analysis of experimental data is an advantage. The candidate will strongly interact with Master and PhD-students and post-doctoral researchers in the group, thus, collaborative abilities are also important. See also: http://www.uib.no/ift/en https://wikihost.uib.no/ift/index.php/Particle_Physics_group http://koherens.uio.no/hep/hepp/ Interested candidates have to contact Prof. Anna Lipniacka, anna.lipniacka@ift.uib.no concerning the details of the application procedure via https://secure.jobbnorge.no/search.aspx . Pay Grade: 57-60 (approx. NOK 438 000 -463 000 per year). The position is available for a period of 2 years, with possibility for up to 2 years extension. Closing date for applications: April 15, 2010 Starting date is preferably May 1st 2010. 93441532edbb7840019d8546a9cc6d7914d04398 Tutorials 0 105 1146 1074 2010-02-23T12:08:17Z Nfyku 4 wikitext text/x-wiki [http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow] [http://vlsi.ee.hacettepe.edu.tr/tutorials/tutorial_yildirim/tutorial.htm ASIC Design Flow Tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_1.pdf Design arcithect tutorial] [[http://www.ece.unh.edu/courses/ece711/tutorials/ Expedition PCB and accompanying tools]] [http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_2.pdf IC studio tutorial] [http://www.swarthmore.edu/NatSci/tali/E77/Mentor_Tutorials/tutorials.htm Mentor Graphic Tutorials] [http://people.ee.duke.edu/~jmorizio/ece261/LABMANUALS/ Mentor tutorials relativt oppdaterte] [http://www.ele.uri.edu/Research/cherry/mentor_tutorial/index.html Mentor Graphics IC Layout & Verification Tutorial] [http://pages.cs.wisc.edu/~david/courses/cs755/cs755/ VLSI System Design course with tutorials] [[Category:Mikroelektronikk]] 58243623845bfe33603e8e0f0ff94558e696aef7 1147 1146 2010-02-23T12:08:41Z Nfyku 4 wikitext text/x-wiki [http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow] [http://vlsi.ee.hacettepe.edu.tr/tutorials/tutorial_yildirim/tutorial.htm ASIC Design Flow Tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_1.pdf Design arcithect tutorial] [http://www.ece.unh.edu/courses/ece711/tutorials/ Expedition PCB and accompanying tools]] [http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_2.pdf IC studio tutorial] [http://www.swarthmore.edu/NatSci/tali/E77/Mentor_Tutorials/tutorials.htm Mentor Graphic Tutorials] [http://people.ee.duke.edu/~jmorizio/ece261/LABMANUALS/ Mentor tutorials relativt oppdaterte] [http://www.ele.uri.edu/Research/cherry/mentor_tutorial/index.html Mentor Graphics IC Layout & Verification Tutorial] [http://pages.cs.wisc.edu/~david/courses/cs755/cs755/ VLSI System Design course with tutorials] [[Category:Mikroelektronikk]] 0ab38b22d14edd1e6efb7205261cab963af3ac99 1155 1147 2010-02-24T10:23:35Z Nfyku 4 wikitext text/x-wiki [http://asic.austriamicrosystems.com/hitkit/hk370/icstation/index.html AMS IC Station Layout &Verification Flow] [http://vlsi.ee.hacettepe.edu.tr/tutorials/tutorial_yildirim/tutorial.htm ASIC Design Flow Tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_1.pdf Design arcithect tutorial] [http://vader.ece.ucsb.edu/ece189/Mentor2007/ DxDesigner/ExpeditionPCB Tutorials] [http://www.ece.unh.edu/courses/ece711/tutorials/ Expedition PCB and accompanying tools]] [http://www.engr.uky.edu/~ee564/tutorials/ic.htm IC Station tutorial] [http://csserver.evansville.edu/~mr56/ece755/tutorial_2.pdf IC studio tutorial] [http://www.swarthmore.edu/NatSci/tali/E77/Mentor_Tutorials/tutorials.htm Mentor Graphic Tutorials] [http://people.ee.duke.edu/~jmorizio/ece261/LABMANUALS/ Mentor tutorials relativt oppdaterte] [http://www.ele.uri.edu/Research/cherry/mentor_tutorial/index.html Mentor Graphics IC Layout & Verification Tutorial] [http://pages.cs.wisc.edu/~david/courses/cs755/cs755/ VLSI System Design course with tutorials] [[Category:Mikroelektronikk]] 8299c8397eb00f798d97942d4b9d95d0491ea7dc Expedition PCB 0 32 1148 64 2010-02-23T12:28:23Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable setenv SDD_ROOT /prog/mentor/ee2007.7/2007.7EE/ setenv MGC_HOME /prog/mentor/ee2007.7/2007.7EE/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/ee2007.7/2007.7EE/SDD_HOME ==Starte utleggsprogrammet== /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/ExpeditionPCB ==Skjemategning== Vi kan bruke Design Architect eller DX designer [[Category:Mikroelektronikk]] b1dd8b1f2647c1d29174f4913494da136e1acaae 1149 1148 2010-02-23T13:45:52Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable setenv SDD_ROOT /prog/mentor/ee2007.7/2007.7EE/ setenv MGC_HOME /prog/mentor/ee2007.7/2007.7EE/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/ee2007.7/2007.7EE/SDD_HOME ==Starte utleggsprogrammet== /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/ExpeditionPCB ==Skjemategning== Vi kan bruke Design Architect eller DX designer ==Introduksjon== [Expedition PCB introduction] [[Category:Mikroelektronikk]] 75f92a3d91b0244881f93987a693107aff378411 1150 1149 2010-02-23T13:46:16Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable setenv SDD_ROOT /prog/mentor/ee2007.7/2007.7EE/ setenv MGC_HOME /prog/mentor/ee2007.7/2007.7EE/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/ee2007.7/2007.7EE/SDD_HOME ==Starte utleggsprogrammet== /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/ExpeditionPCB ==Skjemategning== Vi kan bruke Design Architect eller DX designer ==Introduksjon== [[Expedition PCB introduction]] [[Category:Mikroelektronikk]] 462eaecf11aea0de5cb5806a5fb7155ee40f8f3d Expedition PCB introduction 0 286 1151 2010-02-23T13:52:11Z Nfyku 4 Created page with ' == EXPEDITION PCB INTRODUCTION == IS DESIGNED TO TEACH YOU THE BASIC WORKFLOW FOR CREATING A SIMPLE PRINTED CIRCUIT BOARD USING THE MENTOR GRAPHICS EXPEDITION PCB TOOL. YOU WILL...' wikitext text/x-wiki == EXPEDITION PCB INTRODUCTION == IS DESIGNED TO TEACH YOU THE BASIC WORKFLOW FOR CREATING A SIMPLE PRINTED CIRCUIT BOARD USING THE MENTOR GRAPHICS EXPEDITION PCB TOOL. YOU WILL BE LOOKING AT EDITOR ENVIRONMENTS AND FUNDAMENTAL LIBRARY CONCEPTS. YOU WILL LEARN HOW TO CREATE PADSTACKS AND CELLS. YOU WILL EVENTUALLY ASSEMBLE DATABASES FOR CREATING PARTS. COMPUTER FILES ARE SUPPLIED FOR THE LAB WHERE NECESSARY. ===Schedule=== Lab 1 (4 hours) * INTRODUCTION TO EXPEDITION PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==PART 1 PADSTACK DEFINITION== # open the “library manager” and create a new library called “lab1” under directory “c:\mgtraining\lab1\”. # click on the “edit” menu and select “partition editor”. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. # under “setup” select “parameter setup”. See that under “general” nothing is declared, but under “vias” there is only one standard padstack declared called “L: 026 VIA”. Select “close”. # select the button “library services” from the “library manager”. Select “padstack” menu and select with the browser for the “input from” to “c:\mgtraining\common\libraries\master\master.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the “library manager” the button “Padstacks (pads & holes)”. You should have now two padstack declarations under menu “padstacks” from the padstack editor. Examine the properties of both padstack declarations by clicking once on them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. # exercise: Create a padstack definition for the through hole via with min. 250 um and pad min. 450 um (use the documentation from Electrotryck, p.22) (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) Summary: you now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== # You should have the “lab1” Library open in the Library Manager. <Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: Body length = 5 Body width = 3 Pin to pin spacing = 1.27 Row to row spacing = 5.2 Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: Columns: 4 Spacing: 100 Rows: 2 Spacing: 300 Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== # You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== # You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: In1 2 In2 3 VCC 6 GND 7 Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== # You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 41806eb6bf7e39dabdd5bba6adf9b042acd79ee4 1152 1151 2010-02-23T13:58:44Z Nfyku 4 wikitext text/x-wiki == EXPEDITION PCB INTRODUCTION == IS DESIGNED TO TEACH YOU THE BASIC WORKFLOW FOR CREATING A SIMPLE PRINTED CIRCUIT BOARD USING THE MENTOR GRAPHICS EXPEDITION PCB TOOL. YOU WILL BE LOOKING AT EDITOR ENVIRONMENTS AND FUNDAMENTAL LIBRARY CONCEPTS. YOU WILL LEARN HOW TO CREATE PADSTACKS AND CELLS. YOU WILL EVENTUALLY ASSEMBLE DATABASES FOR CREATING PARTS. COMPUTER FILES ARE SUPPLIED FOR THE LAB WHERE NECESSARY. ===Schedule=== Lab 1 (4 hours) * INTRODUCTION TO EXPEDITION PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==PART 1 PADSTACK DEFINITION== # open the “library manager” and create a new library called “lab1” under directory “c:\mgtraining\lab1\”. # click on the “edit” menu and select “partition editor”. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. # under “setup” select “parameter setup”. See that under “general” nothing is declared, but under “vias” there is only one standard padstack declared called “L: 026 VIA”. Select “close”. # select the button “library services” from the “library manager”. Select “padstack” menu and select with the browser for the “input from” to “c:\mgtraining\common\libraries\master\master.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the “library manager” the button “Padstacks (pads & holes)”. You should have now two padstack declarations under menu “padstacks” from the padstack editor. Examine the properties of both padstack declarations by clicking once on them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. # exercise: Create a padstack definition for the through hole via with min. 250 um and pad min. 450 um (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) Summary: you now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. #<Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: Body length = 5 Body width = 3 Pin to pin spacing = 1.27 Row to row spacing = 5.2 Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: Columns: 4 Spacing: 100 Rows: 2 Spacing: 300 Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: In1 2 In2 3 VCC 6 GND 7 Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 26ae429a078fb53aec7db9e2ba88db4c5b321a56 1153 1152 2010-02-23T14:06:35Z Nfyku 4 wikitext text/x-wiki == EXPEDITION PCB INTRODUCTION == IS DESIGNED TO TEACH YOU THE BASIC WORKFLOW FOR CREATING A SIMPLE PRINTED CIRCUIT BOARD USING THE MENTOR GRAPHICS EXPEDITION PCB TOOL. YOU WILL BE LOOKING AT EDITOR ENVIRONMENTS AND FUNDAMENTAL LIBRARY CONCEPTS. YOU WILL LEARN HOW TO CREATE PADSTACKS AND CELLS. YOU WILL EVENTUALLY ASSEMBLE DATABASES FOR CREATING PARTS. COMPUTER FILES ARE SUPPLIED FOR THE LAB WHERE NECESSARY. ===Schedule=== Lab 1 (4 hours) * INTRODUCTION TO EXPEDITION PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==PART 1 PADSTACK DEFINITION== # open the “library manager” and create a new library called “lab1” under directory “c:\mgtraining\lab1\”. # click on the “edit” menu and select “partition editor”. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. # under “setup” select “parameter setup”. See that under “general” nothing is declared, but under “vias” there is only one standard padstack declared called “L: 026 VIA”. Select “close”. # select the button “library services” from the “library manager”. Select “padstack” menu and select with the browser for the “input from” to “c:\mgtraining\common\libraries\master\master.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the “library manager” the button “Padstacks (pads & holes)”. You should have now two padstack declarations under menu “padstacks” from the padstack editor. Examine the properties of both padstack declarations by clicking once on them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. # exercise: Create a padstack definition for the through hole via with min. 250 um and pad min. 450 um (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) Summary: you now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. #<Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 32345dc7b59f58fe478573ae850c8a6acde6cbea 1154 1153 2010-02-23T14:09:06Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * INTRODUCTION TO EXPEDITION PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==PART 1 PADSTACK DEFINITION== # open the “library manager” and create a new library called “lab1” under directory “c:\mgtraining\lab1\”. # click on the “edit” menu and select “partition editor”. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. # under “setup” select “parameter setup”. See that under “general” nothing is declared, but under “vias” there is only one standard padstack declared called “L: 026 VIA”. Select “close”. # select the button “library services” from the “library manager”. Select “padstack” menu and select with the browser for the “input from” to “c:\mgtraining\common\libraries\master\master.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the “library manager” the button “Padstacks (pads & holes)”. You should have now two padstack declarations under menu “padstacks” from the padstack editor. Examine the properties of both padstack declarations by clicking once on them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. # exercise: Create a padstack definition for the through hole via with min. 250 um and pad min. 450 um (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) Summary: you now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. #<Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] de8d05c9a6474c114753200f6c5fd63045438d00 1156 1154 2010-02-24T10:52:56Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * INTRODUCTION TO EXPEDITION PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “library manager” and create a new library called “lab1” under directory “c:\mgtraining\lab1\”. # Click on the “edit” menu and select “partition editor”. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. # Under “setup” select “parameter setup”. See that under “general” nothing is declared, but under “vias” there is only one standard padstack declared called “L: 026 VIA”. Select “close”. # Select the button “library services” from the “library manager”. Select “padstack” menu and select with the browser for the “input from” to “c:\mgtraining\common\libraries\master\master.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the “library manager” the button “Padstacks (pads & holes)”. You should have now two padstack declarations under menu “padstacks” from the padstack editor. Examine the properties of both padstack declarations by clicking once on them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. # Exercise: Create a padstack definition for the through hole via with min. 250 um and pad min. 450 um (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) Summary: you now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. #<Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 733de52f7e2404a1d9a39102268e4c3ff57a92bd 1157 1156 2010-02-24T13:16:30Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “library manager” and create a new library for example under directory $HOME/kurs. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the “library manager” the button “Padstacks (pads & holes)”. You should have now two padstack declarations under menu “padstacks” from the padstack editor. Examine the properties of both padstack declarations by clicking once on them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. # Exercise: Create a padstack definition for the through hole via with min. 250 um and pad min. 450 um (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) Summary: you now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. #<Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 4e6f3cd15cd4ddbd2706bb7477efe81c21b45a05 1158 1157 2010-02-24T13:20:56Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “library manager” and create a new library for example under directory $HOME/kurs. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ---- Exercise: Create a padstack definition for the through hole via with min. 250 um and pad min. 450 um (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) Summary: you now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. #<Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 2efd51207187d7e80010ce1b2c94c782c7e482a2 1159 1158 2010-02-24T13:26:20Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “library manager” and create a new library for example under directory $HOME/kurs. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. #<Click> the Cells (Package, Draft & Mechanical) button to enter the Cell Editor. # On the Cell Editor dialog, create a new “Partition” called “amplifiers”. # <Click> the New Cell button. # Select the Create new cell option (at the top of the dialog). # Enter the Cell name 8SO. # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 68d939d1a9f14bea52061c073bc7ce3b898f0fee Expedition PCB introduction 0 286 1160 1159 2010-02-24T13:49:17Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # <Click> the Cell Properties button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button. # On the Place Pins dialog, <click> the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] f7773f5d899ba7cd5213909a1341baf1573047ed 1161 1160 2010-02-24T14:00:52Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialog, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # <Click> the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # On the main Cell Editor dialog, <click> the Apply button to save your work. Examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] e2850b3aea0f442dd46f7ece0614982b1f1d463b 1162 1161 2010-02-24T14:07:52Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialog, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # <Click> the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # <Click> the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Editor Control dialog, <click> the OK button. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] aff3bb9c72a454eb04629584303ee4898d5ef151 1163 1162 2010-02-24T15:00:54Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” padstack. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the “IPC, SOIC” padstack will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialog, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click>the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 04da19407b46afd2bc88ca94cc7c1891e0c31072 1164 1163 2010-02-24T15:31:45Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialog, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click>the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # <Click> the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, <click> the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup>Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 14, and choose the through via example padstack (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # <Click> the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # <Click> the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. <Click> directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] ae2f076ad252ee49a71848876cd05dce0f81b106 1165 1164 2010-02-25T07:51:48Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialog, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click>the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool at the bottom of the window, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then <click-drag> the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] a3e8fc32d77f9e570b0b5f38a3a8abd713964695 1166 1165 2010-02-25T08:09:54Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialog, <click> the Close button. # On the Create Package Cell dialog, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialog, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click>the Close button on the Place Pins dialog. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialog, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. # <Click> the OK button on the main Cell Editor dialog to save and exit the Cell Editor. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # <click> the button “Symbols (Circuit&Logical)”. # <click> “file” -> “new library”: create a new partition “amplifiers”. # <click> “file” -> “new symbol”: create a new symbol “amp215”. (A graphical editor should pop-up.) # examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “design Capture Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 50f53a940759daa500a3559a0467bd49e952471e 1167 1166 2010-02-25T08:19:12Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] f756725e58f951b245e394ddf3e1cade7be59e60 1168 1167 2010-02-25T08:36:50Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.)[[File:amp215_symbol.png]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 64d2ddd8a6636770bc493f827d3b48d6b1d69a2f 1170 1168 2010-02-25T08:41:38Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) [[Image:amp215_symbol.png|400px|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] d8d33c6ac4d95f2927fe3f46d818e0fc181899fa 1172 1170 2010-02-25T08:52:17Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. (You can ignore the warnings.) [[Image:amp215_symbol.png|centre|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # <Click> the Parts Database button to launch the PartsDB Editor. # On the PartsDB Editor dialog, creatre the Partition “ amplifiers”. # <Click> the New button to start a new PDB entry. Change the Number to Opamp1. Change the Name to amp01. Change the Label to amp01A. # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, a single amplifier packaged. # Specify a Reference des prefix of U. # On the PartsDB Editor dialog, <click> the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), <click> the Import button. # On the Import dialog, select the symbol name amp215 from the list. # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # <Click> the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] d82629a290eb9b3fb5be0e7afd6f1fee6fead9dd 1173 1172 2010-02-25T09:07:43Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Symbols" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. [[Image:amp215_symbol.png|centre|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Parts" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Parts" folder in the Library Navigator Tree. # Create a new “Part” called “amp01”. (The Part Editor dialogue should pop-up.) # Change the Number to "Opamp1". Change the Label to "amp01A". # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, "A single amplifier packaged". # Specify a Reference des prefix of "U". # On the Part Editor dialog, click the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), click the Import button. # On the Import dialog, select the symbol name amp215 from the list (select "amplifiers" from the Central Library, and then the Symbol name). # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # Click the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # <Click> the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # <Click> the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] 4e2a6220e34d5b8ee63cb9a552d9ff7fa2308e18 1174 1173 2010-02-25T09:15:11Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. Computer files are supplied for the lab where necessary. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Symbols" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. [[Image:amp215_symbol.png|centre|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Parts" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Parts" folder in the Library Navigator Tree. # Create a new “Part” called “amp01”. (The Part Editor dialogue should pop-up.) # Change the Number to "Opamp1". Change the Label to "amp01A". # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, "A single amplifier packaged". # Specify a Reference des prefix of "U". # On the Part Editor dialog, click the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), click the Import button. # On the Import dialog, select the symbol name amp215 from the list (select "amplifiers" from the Central Library, and then the Symbol name). # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # Click the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # Click the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # Click the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # <Click> the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the PartsDB Editor. [[Image:amp1_pin_mapping.png|centre|Pin mapping dialogue the OpAmp]] ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # <click> button “layout templates”. # <click> once on the “4 layer Template” and press the “copy template” button above. # <click> once on the copied template and give it the name “lab1 template”. # <click> once on the “edit template” button. Ignore the forward and backward annotation warnings by pressing “OK”. A default template is opened in “Expedition PCB”. # <click> once on the menu “setup” and select “setup parameters”. # In the menu “general” set the “number of physical layers” to 6. “display units” should be set to “microns” and “meters/s”. <click> on “apply”. # In the menu “Layer Stackup” change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “close”. # “Save” the template and “exit”. # In the “layout template” select “close”. # Select in the “file manger” file -> “exit”. [[Category:Mikroelektronikk]] a0734ceee7c839839e3cef6e3d0d20563ed5741e 1176 1174 2010-02-25T09:28:54Z Nfyku 4 wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Symbols" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. [[Image:amp215_symbol.png|centre|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Parts" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Parts" folder in the Library Navigator Tree. # Create a new “Part” called “amp01”. (The Part Editor dialogue should pop-up.) # Change the Number to "Opamp1". Change the Label to "amp01A". # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, "A single amplifier packaged". # Specify a Reference des prefix of "U". # On the Part Editor dialog, click the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), click the Import button. # On the Import dialog, select the symbol name amp215 from the list (select "amplifiers" from the Central Library, and then the Symbol name). # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # Click the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # Click the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # Click the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # Click the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the Part Editor. [[Image:amp1_pin_mapping.png|centre|Pin mapping dialogue the OpAmp]] ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # Click button “layout templates”. # Click once on the “4 layer Template” and press the “copy template” button above. # Click once on the copied template and give it the name “lab1 template”. # Click once on the “edit template” button. A default template is opened in “Expedition PCB”. # Click on the menu “Setup>Setup Parameters”. # In the “General” tap set the “number of physical layers” to 6. “Display units” should be set to “microns” and “meters/s”. Click on “Apply”. # In the “Layer Stackup” tab change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “OK”. # “Save” the template and “exit”. [[Category:Mikroelektronikk]] ba76be99fefc9757b79d99ec1d6d2ce82ebab987 File:Amp215 symbol.png 6 288 1169 2010-02-25T08:38:09Z Nfyku 4 Opamp symbol for Expedition PCB Introduction wikitext text/x-wiki Opamp symbol for Expedition PCB Introduction 4f378eee9523d216f05b71d73d966519611ea5a7 1171 1169 2010-02-25T08:50:18Z Nfyku 4 uploaded a new version of "[[File:Amp215 symbol.png]]" wikitext text/x-wiki Opamp symbol for Expedition PCB Introduction 4f378eee9523d216f05b71d73d966519611ea5a7 File:Amp1 pin mapping.png 6 289 1175 2010-02-25T09:16:05Z Nfyku 4 Pin mapping diaglogue box for the Expedition PCB introduction wikitext text/x-wiki Pin mapping diaglogue box for the Expedition PCB introduction 85a4edf56a707d5dbb1320c07bc905b49d2f10a6 Expedition PCB 0 32 1177 1150 2010-02-25T09:47:04Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable setenv SDD_ROOT /prog/mentor/ee2007.7/2007.7EE/ setenv MGC_HOME /prog/mentor/ee2007.7/2007.7EE/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/ee2007.7/2007.7EE/SDD_HOME ==Starte utleggsprogrammet== /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/ExpeditionPCB ==Skjemategning== Vi kan bruke Design Architect eller DX designer ==Introduksjon== [[Expedition PCB introduction]] [[Expedition PCB design capture]] [[Category:Mikroelektronikk]] 2b8e951b5514321b7d40e5401e2b715dbcd23a13 1180 1177 2010-02-25T10:12:05Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== En veiledning til design og utlegg Dette er en kort beskrivelse av hvordan man bruker Expedition PCB Sette opp miljøvariable setenv SDD_ROOT /prog/mentor/ee2007.7/2007.7EE/ setenv MGC_HOME /prog/mentor/ee2007.7/2007.7EE/MGC_HOME.ixl setenv SDD_HOME /prog/mentor/ee2007.7/2007.7EE/SDD_HOME ==Starte utleggsprogrammet== /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/ExpeditionPCB ==Skjemategning== Vi kan bruke Design Architect eller DX designer ==Introduksjon== These walk-throughs started from [http://www.ict.kth.se/courses/IL2208/ Department of electronics, computer and software Systems, KTH, Sweden] [[Expedition PCB introduction]] [[Expedition PCB design capture]] [[Category:Mikroelektronikk]] 5af70120df368130d7289cbbece5e9b7965c1f0b 1183 1180 2010-02-26T09:26:46Z Nfyku 4 wikitext text/x-wiki ===Kom igang med Expedition PCB=== Start the Expedition Enterprise Flow Dashboard by expedition These walk-throughs started from [http://www.ict.kth.se/courses/IL2208/ Department of electronics, computer and software Systems, KTH, Sweden] [[Expedition PCB introduction]] [[Expedition PCB design capture]] [[Category:Mikroelektronikk]] d93bc05a33c82182e6fd88e55b11540f4a60350f Expedition PCB design capture 0 290 1178 2010-02-25T09:57:15Z Nfyku 4 Created page with 'The purpose of this lab is to practice the operation of PCB design capture and draw a basic schematic. ==Introduction== There are certain important files that you will be famili...' wikitext text/x-wiki The purpose of this lab is to practice the operation of PCB design capture and draw a basic schematic. ==Introduction== There are certain important files that you will be familiar with before the end of this course: filename.prj - the project file, which contains “pointers” to the locations of other files or folders that have projectrelated information, such as symbol libraries or configuration files. filename.sbk - the schematic block file, which contains graphical schematic data. foldername.cdb - the Common Data Base folder (CDB). The CDB is the compiled version of the schematic, and is the interim data base between DC and downstream tools such as Expedition PCB. Filename.lmc – the LibraryManager Catalogue file. This is the file that holds information about which symbol, cell, and PDB partitions reside in the Central Library. filename.slb - the symbol partition files where schematic symbols representing logic functions are stored within the Central Library. filename.pdb – the Part Database partition files where device information is stored within the Central Library. filename.cel – the Cell partition files where “footprint” information is stored within the Central Library. There are several processes and tools that you will become familiar with: Design Capture - the processes used during schematic design creation. The Verify tool – used to check your design for incorrect information or design mistakes. Compile CDB - the process that compiles the design into the Common Data Base. Packager - the process that will check the CDB to make sure it has all the relevant data, and then, if required, assign “packaging information,” such as Reference designators and pin numbers, in order to prepare the design for Expedition PCB. CDB to BOM – the Bill Of Materials Generator utility. Used to build the bill of materials after the packager has completed. Cross Reference – the utility that assigns page connector annotation information to off-page connector symbols in the schematic file. Connections – used to generate netlists. ==Part 1 PREPARATION== The purpose of this lab exercise is to familiarize yourself with the location of the data that you will be using for this class, and to set up some configuration files for use later in the class. Down the lab material from the website. Unzip the lab2.zip file to c:\mgtraining, # Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & # Browse to C:\Mgtraining. There are two folders, one named common and the other named project. # Open the project folder. There is a completed project called example. Open it and look at the contents. # Go back up to the Mgtraining folder and then down into the common folder and examine the contents. Note: Normally, the objects that we have included here in the common folder would be on a server on your network. You may have a similar setup or may have a slightly different approach. # Open the Libraries folder, and then the Master folder. This is the Central Library we will be using for the rest of the class. Notice the three files –Master.lmc,SysIndex.cbf, and CentLib.prp. These are files that are important to the way the Library Manager works.Look at the contents of the SymbolLibs, PartsDBLibs ,and CellDBLibs folders. The files in each of the folders are library object partitions. # Browse to the software load directory on this machine: C:\mentor\2000.5 \VBDC\config\vbdc # Copy cdb2bom.asc and crossref.asc from here into the C:\Mgtraining\common\config folder. We will examine the contents of these files and edit them later in the class. # Return to the C:\Mgtraining\common folder. Make anew folder under the common folder. Name the new folder Seed_Projects. You are going to create a seed project in this location later in this class. ==Part 2.Creat a seed project== The purpose of this lab exercise is to guide you through the process of creating projects. At the end of this lab, you will have created two new projects. The first is a “seed” project. It will be created by using the Project >> New command, and then the appropriate project settings will be made. The second project will be created from the seed project, using the Project >> Copy command. The second project will be used for the rest of the exercises in this class. Create the Seed Project: Note: In “real life” the seed projects may already be created for you – in this class we will create a new seed project in order to illustrate the process. # Launch DC using Start >> Programs >> Mentor Graphics WG2000.5 >> Design Capture >> Design Capture. # Select the Project >> New command. # In the Project Location field of the New Project Wizard, browse to the folder C:\mgtraining\common\seed_projects using the browse button to the right of the field. click the OK button once you have selected the Seed folder. # In the Project Name field, type in the project name seed1, then click on the Next button on the diaglogue. # We will not add any design files to this seed project, so click on the Next button at the bottom of the diaglogue. # Examine the Project Summary, and then click on the Finish button. # Notice that the seed project you have just created is automatically the active project in DC (see the name of the project in the Titlebar at the top of the Design Capture window). # Select the Project >> Settings pulldown menu. # On the Central Library Tab, select the Browse button beside the Central Library field. Browse to the library: C:\mgtraining\common\libraries\master \master.lmc # Select the File Locations tab on the diaglogue. Change the Configuration file type to Project Options. Click in the field that shows the path to the current config file and click on the Browse button. Browse to: C:\mgtraining\common\config\vbdcsys_C_seed .asc This config file was placed here for you by the system administrator for this class. Editing the project file to point to this config file, as you have just done, will cause the system to use this customized configuration file for any subsequent project that uses this seed project as a template. # click the Edit File button on the diaglogue. Look down through the config file to get an idea of what kinds of settings can be made in this file, but don’t change anything. When you are finished, close the config file. # Click the OK button on the diaglogue. # Select the Project >> PCB Integration pulldown menu. Uncheck the checkbox labeled Forward annotation. This will prevent anyone from reading this design into Expedition PCB before we are ready to release the project to board layout. # Next, check the checkbox labeled Packaging so that no one can accidentally run the packager in Repackage All mode (unless and until you uncheck this box). # Make sure the checkbox labeled Back annotation is checked (on), and the option to Generate FLATNETNAME properties is based on Schematic Net Name changes. # Click the OK button on the diaglogue. You now have a seed project that can be used as a “template” for starting any other job that will require the same project settings. Remember that at most work environments, the seed project will be located at a shared point on the network so that everyone can access it. ==Part 3 Create a project from the seed project== Create the class project: # Select the Project >> Copy command. # In the Old Project field, make sure the current project is listed as: C:\mgtraining\common\seed_projects\seed1 \seed1.prj # In the Project Name field, type in a project name of 2101A (you do not have to type in the .prj extension - in fact, it won’t let you). # In the Project Location field, type in the following pathname: C:\mgtraining\project\2101A. Click on the OK button on the diaglogue. # At this point, the new project has been created, but it is not the active project. Select the Project >> Open command, and browse to the new project location: C:\mgtraining\project\2101A\2101A.prj. Click on the Open button. # Look at the Title bar for DC. The new project, 2101A, is shown as the active project. Notice that you did not have to close the old project first, because there can only be one project active at a time. Therefore as soon as you make the new project active, the previous active project is automatically closed. # Just as a check, use the Project >> Settings command to make sure the project settings were correctly copied from the seed project. You should have C:\mgtraining\common\libraries\master\master.lmc listed as the central library, and all of the other settings you made previously in this diaglogue should still be in effect. # The changes you made in the Project >> PCB Integration menu should also be the same as what you set up in the seed project. If not, call your instructor. You now have the project file that will be used for the rest of this class Part 4 Schematic and Compile This part will introduce you to the process of creating a new file, opening multiple pages of a file, placing Devices and Symbols, and saving your work. Follow the step-by-step directions below. The example pages follow the lab instructions. # Use the Project >> Open command to activate the 2101A project. file>>open, in c:\mgtraining \project\example\ ,open the schematic files ExpPCB1.sbk, Array.sbk, in c:\mgtraining \project\opamp\, open the file opamp.sbk, and save all these files in c:\mgtraining \project\2101A\, and include all these file in the project. # Select the File >> New command. Make sure the file type on the diaglogue is set to schematic and click the OK button. # Use the File >> Save As command to name this file D_2_A.sbk. Answer Yes to the prompt to add this file to the project. # Select the Place >> Device command and choose DCP in the diaglogue. In parts Database tab, in Partition, choose 5474, then in Parts found, select 74ALS00_SOP, then press place, put the device in the schematic as the figure. # Edit>> Array Copy, input 4 in number of rows, 1 in number of columns. Then place the 4 devices in the figure. # Do as in step 4 choose 74ALS1008_SOP,74ALS187_DIP and 74ALS49_SOP, and set them in the right position as those in figure. # place>>block, a diaglogue named place block pop up, choose opamp, and then place 2 blocks at the right of the figure, and # place>>bus, and draw the two buses DA_Bus(16:23) and BANK(0:1),RAMWR(0:1),WR(0:1),give the name by double click the bus, and input the name in net name Note: BANK(0:1),RAMWR(0:1),WR(0:1), is one bus not three. # place>>wire, draw all the wires as tho se in the fig,. # place>>symble, find basic>CON_HIER_I;1, then place 3 devices on the left of the figure. # place>>symble, find basic>CON_HIER_O;1, then place 2 devices on the right of the figure, give them names as those in the fig, RAMRD should give names as RAMRD~, then, connect the connectors with the buses or wires. # . Execute the Tools >> Verify… command. In the Select by Group area of the File Verify diaglogue, make sure that only the All errors, All warnings and Schematic checkboxes are checked on. In the Options area of the diaglogue, change the Scope to Design, and click on the Repair errors button. . Click the OK button to start the Verify tool. Once all errors have been corrected and all warnings have been understood and, if necessary, corrected, you are finished with this part of the Lab. Continue with the CDB section. The CDB The purpose of this section of the Lab exercise is to create the Common Database version of your schematic design, in order to prepare the design to be shared with downstream tools. This Lab must be completed before you will be able to do the next section of the Lab. 1. Before you compile the Common Database for any project, you should examine the FileView Tab of the Workspace to be sure that only the schematic files that are intended to be part of the project are listed. If you see extraneous files, remove them by right- clicking on the file name and choosing Remove File from Project from the resulting popup menu. This will prevent the compiler from including any schematics that are not intended to be a part of the design (for example, “junk” or experimental files). # Choose the Tools >> Other Utilities… menu. . From the list of Design Capture Utilities, choose the Compile CDB utility and click the Apply button (or double-click on the Compile CDB utility). . Make sure the project file listed is correct. It should show C:\mgtraining\project\2101a\2101a.prj in the project file field. # Observe the Command Output window. If it says there were no errors or warnings, go on to the next step. If there were errors or warnings, you must fix them. The log file you created, cdblog.txt, contains the same messages as the Command Output window, so that you can refer to these messages if necessary by opening the log file in the Notepad Editor. If you need help understanding the error messages, call your instructor. Once you have successfully compiled the CDB, dismiss the Command Output window, Cancel the CDB Compiler utility, and Cancel the Design Capture Utilities. You now have a commo n database for your project. The Packager This section of the Lab exercise is to create the Packaging information and update the design, in order to prepare the design to be shared with downstream tools. This Lab must be completed before you will be able to do the next Lab. # Check the Project >> Settings Design Tab to ensure that the “Absorb instance data …” option is set. . Make sure all of your schematic files are closed. # Choose the Tools >> Other Utilities… menu. # From the list of Design Capture Utilities, choose the Packager utility and click the Apply button (or double-click on the Packager utility). # Make sure the project file listed is correct. It should show C:\mgtraining\project\2101a\2101a.prj in the project file field. # Leave the Packager Options set to default values (if you wish, you can check No Compile, since we just successfully compiled the CDB a few steps ago – it is up to you). # Click the Apply button. # Observe the output window. If it says there were no errors or warnings, go on to step . If there were errors or warnings, you must fix them. Read the .\integration\partpkg.log file which is automatically created. It contains information about any errors or warnings the packager generated. # Issue the Tools >> Other Utilities menu. Choose the CDB to BOM utility. Use all of the default settings and create a Bill of Materials for your 21101A project. Note: if you leave the field for configuration file blank, the system will use the default config file pointed to by your project file. The default BOM output file will be called 2101A.BOM and will be located in your project folder. Open the file and examine the results. # Close all of the schematic files in your project. In the Other Utilities diaglogue, run the Cross Reference Utility on your design with all default settings, except make sure to click on the checkbox labeled Annotate the entire design. # Issue the Tools >> Other Utilities command, and open the Connections tool. Choose your favorite netlist style and click the Create button. Once the Netlister has finished, open the netlist file (it will be located in a subfolder that was automatically created under your project folder, called .\vbconn\output) and examine the contents. When finished, close the file. [[Category:Mikroelektronikk]] ac873d5a3f13b6d7c732e670e2aebdf7b024cbca 1179 1178 2010-02-25T10:02:29Z Nfyku 4 wikitext text/x-wiki The purpose of this lab is to practice the operation of PCB design capture and draw a basic schematic. ==Introduction== There are certain important files that you will be familiar with before the end of this course: * filename.prj - the project file, which contains “pointers” to the locations of other files or folders that have * projectrelated information, such as symbol libraries or configuration files. * filename.sbk - the schematic block file, which contains graphical schematic data. * foldername.cdb - the Common Data Base folder (CDB). The CDB is the compiled version of the schematic, and is the interim data base between DC and downstream tools such as Expedition PCB. * Filename.lmc – the LibraryManager Catalogue file. This is the file that holds information about which symbol, cell, and PDB partitions reside in the Central Library. * filename.slb - the symbol partition files where schematic symbols representing logic functions are stored within the Central Library. * filename.pdb – the Part Database partition files where device information is stored within the Central Library. * filename.cel – the Cell partition files where “footprint” information is stored within the Central Library. There are several processes and tools that you will become familiar with: * Design Capture - the processes used during schematic design creation. * The Verify tool – used to check your design for incorrect information or design mistakes. * Compile CDB - the process that compiles the design into the Common Data Base. * Packager - the process that will check the CDB to make sure it has all the relevant data, and then, if required, assign “packaging information,” such as Reference designators and pin numbers, in order to prepare the design for Expedition PCB. * CDB to BOM – the Bill Of Materials Generator utility. Used to build the bill of materials after the packager has completed. * Cross Reference – the utility that assigns page connector annotation information to off-page connector symbols in the schematic file. * Connections – used to generate netlists. ==Part 1 PREPARATION== The purpose of this lab exercise is to familiarize yourself with the location of the data that you will be using for this class, and to set up some configuration files for use later in the class. Down the lab material from the website. Unzip the lab2.zip file to c:\mgtraining, # Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & # Browse to C:\Mgtraining. There are two folders, one named common and the other named project. # Open the project folder. There is a completed project called example. Open it and look at the contents. # Go back up to the Mgtraining folder and then down into the common folder and examine the contents. Note: Normally, the objects that we have included here in the common folder would be on a server on your network. You may have a similar setup or may have a slightly different approach. # Open the Libraries folder, and then the Master folder. This is the Central Library we will be using for the rest of the class. Notice the three files –Master.lmc,SysIndex.cbf, and CentLib.prp. These are files that are important to the way the Library Manager works.Look at the contents of the SymbolLibs, PartsDBLibs ,and CellDBLibs folders. The files in each of the folders are library object partitions. # Browse to the software load directory on this machine: C:\mentor\2000.5 \VBDC\config\vbdc # Copy cdb2bom.asc and crossref.asc from here into the C:\Mgtraining\common\config folder. We will examine the contents of these files and edit them later in the class. # Return to the C:\Mgtraining\common folder. Make anew folder under the common folder. Name the new folder Seed_Projects. You are going to create a seed project in this location later in this class. ==Part 2.Creat a seed project== The purpose of this lab exercise is to guide you through the process of creating projects. At the end of this lab, you will have created two new projects. The first is a “seed” project. It will be created by using the Project >> New command, and then the appropriate project settings will be made. The second project will be created from the seed project, using the Project >> Copy command. The second project will be used for the rest of the exercises in this class. Create the Seed Project: Note: In “real life” the seed projects may already be created for you – in this class we will create a new seed project in order to illustrate the process. # Launch DC using Start >> Programs >> Mentor Graphics WG2000.5 >> Design Capture >> Design Capture. # Select the Project >> New command. # In the Project Location field of the New Project Wizard, browse to the folder C:\mgtraining\common\seed_projects using the browse button to the right of the field. click the OK button once you have selected the Seed folder. # In the Project Name field, type in the project name seed1, then click on the Next button on the diaglogue. # We will not add any design files to this seed project, so click on the Next button at the bottom of the diaglogue. # Examine the Project Summary, and then click on the Finish button. # Notice that the seed project you have just created is automatically the active project in DC (see the name of the project in the Titlebar at the top of the Design Capture window). # Select the Project >> Settings pulldown menu. # On the Central Library Tab, select the Browse button beside the Central Library field. Browse to the library: C:\mgtraining\common\libraries\master \master.lmc # Select the File Locations tab on the diaglogue. Change the Configuration file type to Project Options. Click in the field that shows the path to the current config file and click on the Browse button. Browse to: C:\mgtraining\common\config\vbdcsys_C_seed .asc This config file was placed here for you by the system administrator for this class. Editing the project file to point to this config file, as you have just done, will cause the system to use this customized configuration file for any subsequent project that uses this seed project as a template. # click the Edit File button on the diaglogue. Look down through the config file to get an idea of what kinds of settings can be made in this file, but don’t change anything. When you are finished, close the config file. # Click the OK button on the diaglogue. # Select the Project >> PCB Integration pulldown menu. Uncheck the checkbox labeled Forward annotation. This will prevent anyone from reading this design into Expedition PCB before we are ready to release the project to board layout. # Next, check the checkbox labeled Packaging so that no one can accidentally run the packager in Repackage All mode (unless and until you uncheck this box). # Make sure the checkbox labeled Back annotation is checked (on), and the option to Generate FLATNETNAME properties is based on Schematic Net Name changes. # Click the OK button on the diaglogue. You now have a seed project that can be used as a “template” for starting any other job that will require the same project settings. Remember that at most work environments, the seed project will be located at a shared point on the network so that everyone can access it. ==Part 3 Create a project from the seed project== Create the class project: # Select the Project >> Copy command. # In the Old Project field, make sure the current project is listed as: C:\mgtraining\common\seed_projects\seed1 \seed1.prj # In the Project Name field, type in a project name of 2101A (you do not have to type in the .prj extension - in fact, it won’t let you). # In the Project Location field, type in the following pathname: C:\mgtraining\project\2101A. Click on the OK button on the diaglogue. # At this point, the new project has been created, but it is not the active project. Select the Project >> Open command, and browse to the new project location: C:\mgtraining\project\2101A\2101A.prj. Click on the Open button. # Look at the Title bar for DC. The new project, 2101A, is shown as the active project. Notice that you did not have to close the old project first, because there can only be one project active at a time. Therefore as soon as you make the new project active, the previous active project is automatically closed. # Just as a check, use the Project >> Settings command to make sure the project settings were correctly copied from the seed project. You should have C:\mgtraining\common\libraries\master\master.lmc listed as the central library, and all of the other settings you made previously in this diaglogue should still be in effect. # The changes you made in the Project >> PCB Integration menu should also be the same as what you set up in the seed project. If not, call your instructor. You now have the project file that will be used for the rest of this class Part 4 Schematic and Compile This part will introduce you to the process of creating a new file, opening multiple pages of a file, placing Devices and Symbols, and saving your work. Follow the step-by-step directions below. The example pages follow the lab instructions. # Use the Project >> Open command to activate the 2101A project. file>>open, in c:\mgtraining \project\example\ ,open the schematic files ExpPCB1.sbk, Array.sbk, in c:\mgtraining \project\opamp\, open the file opamp.sbk, and save all these files in c:\mgtraining \project\2101A\, and include all these file in the project. # Select the File >> New command. Make sure the file type on the diaglogue is set to schematic and click the OK button. # Use the File >> Save As command to name this file D_2_A.sbk. Answer Yes to the prompt to add this file to the project. # Select the Place >> Device command and choose DCP in the diaglogue. In parts Database tab, in Partition, choose 5474, then in Parts found, select 74ALS00_SOP, then press place, put the device in the schematic as the figure. # Edit>> Array Copy, input 4 in number of rows, 1 in number of columns. Then place the 4 devices in the figure. # Do as in step 4 choose 74ALS1008_SOP,74ALS187_DIP and 74ALS49_SOP, and set them in the right position as those in figure. # place>>block, a diaglogue named place block pop up, choose opamp, and then place 2 blocks at the right of the figure, and # place>>bus, and draw the two buses DA_Bus(16:23) and BANK(0:1),RAMWR(0:1),WR(0:1),give the name by double click the bus, and input the name in net name Note: BANK(0:1),RAMWR(0:1),WR(0:1), is one bus not three. # place>>wire, draw all the wires as tho se in the fig,. # place>>symble, find basic>CON_HIER_I;1, then place 3 devices on the left of the figure. # place>>symble, find basic>CON_HIER_O;1, then place 2 devices on the right of the figure, give them names as those in the fig, RAMRD should give names as RAMRD~, then, connect the connectors with the buses or wires. # . Execute the Tools >> Verify… command. In the Select by Group area of the File Verify diaglogue, make sure that only the All errors, All warnings and Schematic checkboxes are checked on. In the Options area of the diaglogue, change the Scope to Design, and click on the Repair errors button. . Click the OK button to start the Verify tool. Once all errors have been corrected and all warnings have been understood and, if necessary, corrected, you are finished with this part of the Lab. Continue with the CDB section. The CDB The purpose of this section of the Lab exercise is to create the Common Database version of your schematic design, in order to prepare the design to be shared with downstream tools. This Lab must be completed before you will be able to do the next section of the Lab. 1. Before you compile the Common Database for any project, you should examine the FileView Tab of the Workspace to be sure that only the schematic files that are intended to be part of the project are listed. If you see extraneous files, remove them by right- clicking on the file name and choosing Remove File from Project from the resulting popup menu. This will prevent the compiler from including any schematics that are not intended to be a part of the design (for example, “junk” or experimental files). # Choose the Tools >> Other Utilities… menu. . From the list of Design Capture Utilities, choose the Compile CDB utility and click the Apply button (or double-click on the Compile CDB utility). . Make sure the project file listed is correct. It should show C:\mgtraining\project\2101a\2101a.prj in the project file field. # Observe the Command Output window. If it says there were no errors or warnings, go on to the next step. If there were errors or warnings, you must fix them. The log file you created, cdblog.txt, contains the same messages as the Command Output window, so that you can refer to these messages if necessary by opening the log file in the Notepad Editor. If you need help understanding the error messages, call your instructor. Once you have successfully compiled the CDB, dismiss the Command Output window, Cancel the CDB Compiler utility, and Cancel the Design Capture Utilities. You now have a commo n database for your project. The Packager This section of the Lab exercise is to create the Packaging information and update the design, in order to prepare the design to be shared with downstream tools. This Lab must be completed before you will be able to do the next Lab. # Check the Project >> Settings Design Tab to ensure that the “Absorb instance data …” option is set. . Make sure all of your schematic files are closed. # Choose the Tools >> Other Utilities… menu. # From the list of Design Capture Utilities, choose the Packager utility and click the Apply button (or double-click on the Packager utility). # Make sure the project file listed is correct. It should show C:\mgtraining\project\2101a\2101a.prj in the project file field. # Leave the Packager Options set to default values (if you wish, you can check No Compile, since we just successfully compiled the CDB a few steps ago – it is up to you). # Click the Apply button. # Observe the output window. If it says there were no errors or warnings, go on to step . If there were errors or warnings, you must fix them. Read the .\integration\partpkg.log file which is automatically created. It contains information about any errors or warnings the packager generated. # Issue the Tools >> Other Utilities menu. Choose the CDB to BOM utility. Use all of the default settings and create a Bill of Materials for your 21101A project. Note: if you leave the field for configuration file blank, the system will use the default config file pointed to by your project file. The default BOM output file will be called 2101A.BOM and will be located in your project folder. Open the file and examine the results. # Close all of the schematic files in your project. In the Other Utilities diaglogue, run the Cross Reference Utility on your design with all default settings, except make sure to click on the checkbox labeled Annotate the entire design. # Issue the Tools >> Other Utilities command, and open the Connections tool. Choose your favorite netlist style and click the Create button. Once the Netlister has finished, open the netlist file (it will be located in a subfolder that was automatically created under your project folder, called .\vbconn\output) and examine the contents. When finished, close the file. [[Category:Mikroelektronikk]] d1deb4a5a8c1c79d196a5fbaf60de837860e099c Busy Box and related 0 3 1181 1072 2010-02-25T10:48:29Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the University of Bergen. For questions and enquiries Contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] av Department of Physics and Technology. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 3b59fd7f5881814fdbd8727ac893f4b594020412 1182 1181 2010-02-25T10:50:32Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at Department of Physics and Technology at the University of Bergen. For questions and enquiries Contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] be4c0e54eed96dbd0f55f02492103bcbc33eb0da 1184 1182 2010-02-26T09:56:33Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 82c206dc2db92a19ab329993e12489f78561e3b5 1195 1184 2010-03-10T10:32:53Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 7cd01e4833728cbdb734e2a56d05a4b59f4a1654 PHYS321 0 278 1185 1108 2010-03-01T09:36:39Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] dd045c8a802c354df9000239ada943f18561adac Microelectronics group 0 25 1186 1111 2010-03-10T08:13:59Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [XJTAG] Boundary Scan with XJTAG * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare [[Category:Mikroelektronikk]] b943aaf215d65b580b19f0c55bead5a4bcc06770 1187 1186 2010-03-10T08:14:23Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare [[Category:Mikroelektronikk]] 1fa920ccfec6a7f33e5ac5cb81fab9d22396fc38 XJTAG 0 189 1188 570 2010-03-10T08:37:03Z Nfyku 4 wikitext text/x-wiki XJEase and XJDeveloper Tutorial You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. XJDemo version 1.2 XJDemo version 2.0 W If you have an earlier XJDemo board (most likely version 1.2), then please use the tutorial file on your installation CD in the "XJDemo 1.2" directory or contact XJTAG Support (support@xjtag.com). Overview This tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The structure of the tutorial is as follows: Circuit description The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. Creating the project file You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. Running the connection test We run a connection test and demonstrate various types of error detection using the XJDemo board. Simple device testing We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. More complex device testing We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. Design reuse Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. DFT Analysis The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. -------------------------------------------------------------------------------- Next © 2009 XJTAG Ltd. All rights reserved. XJTAG Version 2.3.6 fa5189923b79e641160e58c38bb4f0ac1ad37fe9 1189 1188 2010-03-10T08:50:24Z Nfyku 4 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[File:XJDemo v1.2.png]][[File:XJDemo v2.0.png]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the # , then please use the tutorial file on your installation CD in the "XJDemo 1.2" directory or contact XJTAG Support (support@xjtag.com). ==Overview== This tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. 33908bb0f6b69038a7490daaf67a0306a2529393 1192 1189 2010-03-10T08:58:39Z Nfyku 4 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from .... ==Overview== This tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. c265d70fa0819b8563d911f849b87558ff7bdfcc 1193 1192 2010-03-10T09:00:13Z Nfyku 4 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from .... The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. 7142190c8e8318841d629e2a488750921c8350c5 1194 1193 2010-03-10T09:14:22Z Nfyku 4 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [[file:XJTAG Demo Board.zip|here]] (you have to log in first). The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. [[Category:Mikroelektronikk]] 5aae2d0791714ce2e106b05b9ffe17a09737badc 1198 1194 2010-03-10T12:57:42Z Nfyku 4 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [[http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip|here]]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. [[Category:Mikroelektronikk]] c3681ddd0b734cc243fd5a8629d60923e2c6683f 1199 1198 2010-03-10T12:58:03Z Nfyku 4 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [[http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. [[Category:Mikroelektronikk]] ba1bf99fbab2424c9a0af9e2a4cd9df8d11a79fc 1200 1199 2010-03-10T12:58:33Z Nfyku 4 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. [[Category:Mikroelektronikk]] 2c5c32971e57b709f690dc297d7cfd860f483588 1207 1200 2010-03-15T11:01:42Z Ave082 33 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board. Refer to the schematic for the pinmapping for page 11 of the tutorial. # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. [[Category:Mikroelektronikk]] b23ec3a666c6e0764cd25718198a3b183341a7ba File:XJDemo v1.2.png 6 291 1190 2010-03-10T08:51:12Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:XJDemo v2.0.png 6 292 1191 2010-03-10T08:51:36Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Electronics for the Time Projection Chamber (TPC) 0 4 1196 126 2010-03-10T10:39:33Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] <br><br> == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://www.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://www.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://www.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://www.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://www.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://www.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://www.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://www.ift.uib.no/firmware/alme/loop.o loop.o] | [http://www.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://www.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://www.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://www.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://www.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://www.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://www.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://www.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://www.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://www.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://www.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://www.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://www.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://www.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://www.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://www.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br><br> === Download Section === [http://www.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://www.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://www.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://www.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://www.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://www.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://www.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://www.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://www.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://www.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://www.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://www.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://www.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://www.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://www.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://www.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://www.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://www.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://www.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://www.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://www.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://www.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://www.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://www.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://www.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://www.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://www.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] <br><br> [[Category:Alice]] 9962cd789889cfb07e9b3770610f40c5f4af783c 1197 1196 2010-03-10T10:42:06Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] <br><br> == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] <br><br> [[Category:Alice]] f64836becdb95a2a215b220c932e85d1b95be85a IC Station 0 31 1201 1086 2010-03-12T15:35:47Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: '' DRC (Design rule check) '' LVS (Layout versus schematic test) '' Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC studio er startet, se [https://wikihost.uib.no/ift/index.php/IC_studio IC studio]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de ''design rules'' som gjelder for prosessen. DRC sjekker ''ikke'' om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg ''ICrules'' --> ''Check''. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg ''Options...'' og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg ''OK'' begge steder for å kjøre DRC. Bruk så knappene ''First'' og ''Next'' for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under ''Options...'' trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg ''File'' --> ''Logic'' --> ''Close''. # Fra paletten: Velg ''ICtrace(M)'' # Fra menylinjen velg ''HIT-KIT Utilities > Setup LVS (ICtrace)'' # Klikk på ''Mask Mode'' # Fra paletten: Klikk på ''Load Rules'' # Velg SDL og klikk ''OK'' # Fra paletten: Klikk på ''LVS'' # Trykk på knappen ''Setup LVS...'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da av "Setup LVS (ICtrace)". Kontroller disse. #:[[Image:Setup LVS.png]] # Trykk på knappen ''Setup Trace Props'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Kontroller. #:[[Image:Setup Trace Properties.png]] #likk ''OK'' begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg ''Logic'' --> ''Open'', og angi stien til viewpointet (samme som ''Source Name'' i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasitanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: <br/> Fra paletten: Velg ''ICextract (M)'' <br/> Lukk eventuelle åpne ''logic''. <br/> Klikk ''Lumped'' og fyll ut dialogboksen tilsvarende figuren under. [[Image:extract_mask_lumped_parameters.png]] Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> Skjemaet vil nå se ut omtrent som figuren under. [[Image:sch_parasitics_included.png]] Legg til transistormodellene som skal brukes i simuleringen. <br/> Klikk ''Lib/Temp/Inc'' og legg til følgende sti (for S35): <pre> $AMS_DIR/eldo/s35/cmos53tm.mod </pre> Fra paletten, velg ''Annotations --> Merge all'' <br/> Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 2038707bcd49e9320dfe23e671d088f2b4ac5982 1204 1201 2010-03-12T15:44:54Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: '' DRC (Design rule check) '' LVS (Layout versus schematic test) '' Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icpl/_bk_icpl.html Vi antar nå at IC studio er startet, se [https://wikihost.uib.no/ift/index.php/IC_studio IC studio]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de ''design rules'' som gjelder for prosessen. DRC sjekker ''ikke'' om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. Fra paletten: Velg ''ICrules'' --> ''Check''. [[Image:drc_chedr.png]] Feilmeldingen "Number must be a positive number or zero" kommer av at default-verdien til "Maximum results per rule check" er satt altfor høy eller en negativ verdi. Velg ''Options...'' og sett innstillingene omtrent som på figuren under. Du vil gjerne sette navnet på rapportfilen til noe mer passende... [[Image:drc_options_2.png]] Velg ''OK'' begge steder for å kjøre DRC. Bruk så knappene ''First'' og ''Next'' for å se på feil for feil. Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. De innstillingene vi gjorde under ''Options...'' trenger vi bare gjøre første gang vi kjører DRC etter å ha startet IC Station. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg ''File'' --> ''Logic'' --> ''Close''. # Fra paletten: Velg ''ICtrace(M)'' # Fra menylinjen velg ''HIT-KIT Utilities > Setup LVS (ICtrace)'' # Klikk på ''Mask Mode'' # Fra paletten: Klikk på ''Load Rules'' # Velg SDL og klikk ''OK'' # Fra paletten: Klikk på ''LVS'' # Trykk på knappen ''Setup LVS...'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da av "Setup LVS (ICtrace)". Kontroller disse. #:[[Image:Setup LVS.png|538px]] # Trykk på knappen ''Setup Trace Props'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Kontroller. #:[[Image:Setup Trace Properties.png|417px]] #likk ''OK'' begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg ''Logic'' --> ''Open'', og angi stien til viewpointet (samme som ''Source Name'' i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasistanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: #Fra paletten: Velg ''ICextract (M)'' <br/> #Lukk eventuelle åpne ''logic''. <br/> #Klikk ''Lumped'' og fyll ut dialogboksen tilsvarende figuren under. #:[[Image:extract_mask_lumped_parameters.png|440px]] #Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> #:Skjemaet vil nå se ut omtrent som figuren under.[[Image:sch_parasitics_included.png]] #Legg til transistormodellene som skal brukes i simuleringen. <br/> #Klikk ''Lib/Temp/Inc'' og legg til følgende sti (for S35): #:<pre>$AMS_DIR/eldo/s35/cmos53tm.mod</pre> #Fra paletten, velg ''Annotations --> Merge all'' <br/> #:Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. #Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems "beskriver her", file:///prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html en metode for å lage en selvstendig netlist for krets med parasitiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (Session->Environment->Run Sim) og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene Extract->Mask-Lumped eller Extract->Mask->Distributed istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i Setup->Session->Environment. 0d0f65e9808f0d36fee7cb608f550031d7b3c6af 1205 1204 2010-03-12T16:00:27Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: * DRC (Design rule check) * LVS (Layout versus schematic test) * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 ''/prog/mentor/2006.2b_rhelx86linux/icflow_home/shared/htmldocs/_bk_icpl/_bk_icpl.html''. Vi antar nå at IC studio er startet, se [[IC studio]]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de ''design rules'' som gjelder for prosessen. DRC sjekker ''ikke'' om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. #Fra paletten: Velg ''ICrules'', deretter ''Check''. #Velg Options i pop-up vinduet. #Set ''Maximum results per rule check'' til et passende tall, og velg andre instillinger, f.eks. slik som vist under. #:[[Image:drc_options_2.png]] #Klikk ''OK'' #Klikk ''OK'' i pop-up vinduet for å kjøre DRC. #Bruk så knappene ''First'' og ''Next'' for å se på feil for feil. #:Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg ''File'' --> ''Logic'' --> ''Close''. # Fra paletten: Velg ''ICtrace(M)'' # Fra menylinjen velg ''HIT-KIT Utilities > Setup LVS (ICtrace)'' # Klikk på ''Mask Mode'' # Fra paletten: Klikk på ''Load Rules'' # Velg SDL og klikk ''OK'' # Fra paletten: Klikk på ''LVS'' # Trykk på knappen ''Setup LVS...'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da av "Setup LVS (ICtrace)". Kontroller disse. #:[[Image:Setup LVS.png|538px]] # Trykk på knappen ''Setup Trace Props'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Kontroller. #:[[Image:Setup Trace Properties.png|417px]] #likk ''OK'' begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg ''Logic'' --> ''Open'', og angi stien til viewpointet (samme som ''Source Name'' i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasistanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: #Fra paletten: Velg ''ICextract (M)'' <br/> #Lukk eventuelle åpne ''logic''. <br/> #Klikk ''Lumped'' og fyll ut dialogboksen tilsvarende figuren under. #:[[Image:extract_mask_lumped_parameters.png|440px]] #Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> #:Skjemaet vil nå se ut omtrent som figuren under.[[Image:sch_parasitics_included.png]] #Legg til transistormodellene som skal brukes i simuleringen. <br/> #Klikk ''Lib/Temp/Inc'' og legg til følgende sti (for S35): #:<pre>$AMS_DIR/eldo/s35/cmos53tm.mod</pre> #Fra paletten, velg ''Annotations --> Merge all'' <br/> #:Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. #Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems beskriver i filen ''/prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html'' en metode for å lage en selvstendig nettliste for krets med parasittiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (''Session->Environment->Run Sim'') og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene ''Extract->Mask-Lumped eller Extract->Mask->Distributed'' istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i ''Setup->Session->Environment''. 27d19b0b164161d7e41604d15fc2251346455640 1206 1205 2010-03-12T16:01:19Z Nfyku 4 wikitext text/x-wiki ===IC Station=== Dette dokumentet beskriver: * DRC (Design rule check) * LVS (Layout versus schematic test) * Ekstrahering av parameter fra utlegg Online dokumentasjon kan leses fra firefox på mikroserver2 ''/prog/mentor/2006.2b_rhelx86linux/icflow_home/shared/htmldocs/_bk_icpl/_bk_icpl.html''. Vi antar nå at IC studio er startet, se [[IC studio]]. I tillegg er skjemaet ferdig laget og det er laget et Viewpoint. ==Create cell== Når vi skal lage et utlegg i IC station begynner vi med å lage et nytt "View". Klikk på det biblioteket ditt og høyre-klikk deretter i Cell-vinduet og velg "New View". Velg "View Type" layout og trykk deretter Next og velg "Block" under Layout Definition og vpt_c35b4 under Connectivity Source. Deretter trykker du Finish. Du skal nå få opp IC station. ==DRC (Design Rule Check)== DRC sjekker at utlegget er korrekt i henhold til de ''design rules'' som gjelder for prosessen. DRC sjekker ''ikke'' om transistorer er riktig koblet sammen. Det gjøres i LVS-testen som beskrives senere. #Fra paletten: Velg ''ICrules'', deretter ''Check''. #Velg Options i pop-up vinduet. #Set ''Maximum results per rule check'' til et passende tall, og velg andre instillinger, f.eks. slik som vist under. #:[[Image:drc_options_2.png]] #Klikk ''OK'' #Klikk ''OK'' i pop-up vinduet for å kjøre DRC. #Bruk så knappene ''First'' og ''Next'' for å se på feil for feil. #:Feilene markeres med en hvit ramme i utlegget samtidig som det står en forklarende melding nederst på skjermen. DRC kan også startes fra menyen øverst i vinduet. Se bilde. [[Image:drc_fra_meny.png]] ==LVS (Layout Versus Schematic test)== Når utlegget har passert DRC må vi kjøre LVS-sjekk. Her sjekkes at utlegget stemmer overens med skjemaet. LVS kontrollerer at skjema og utlegg er samme elektriske krets. Dersom noen komponenter er koblet feil sammen eller har feil størrelse i henhold til skjema, får vi melding om det. OBS! Hvis du har åpnet et "logic" i forbindelse med SDL, må dette lukkes nå. Velg ''File'' --> ''Logic'' --> ''Close''. # Fra paletten: Velg ''ICtrace(M)'' # Fra menylinjen velg ''HIT-KIT Utilities > Setup LVS (ICtrace)'' # Klikk på ''Mask Mode'' # Fra paletten: Klikk på ''Load Rules'' # Velg SDL og klikk ''OK'' # Fra paletten: Klikk på ''LVS'' # Trykk på knappen ''Setup LVS...'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Disse innstillingene ble satt da av "Setup LVS (ICtrace)". Kontroller disse. #:[[Image:Setup LVS.png|538px]] # Trykk på knappen ''Setup Trace Props'' #:Dialogboksen du nå får se vil ha innstillinger tilsvarende figuren under. Kontroller. #:[[Image:Setup Trace Properties.png|417px]] #likk ''OK'' begge steder for å kjøre LVS. Sjekk rapportfilen. Hvis LVS-testen gikk bra vil du se et smilefjes i rapporten. Når LVS-testen er vellykket kan vi åpne et vindu i IC Station som viser skjemaet. Velg ''Logic'' --> ''Open'', og angi stien til viewpointet (samme som ''Source Name'' i dialogboksen LVS (Mask)). Ved å klikke på et nett eller en transistor, vil tilsvarende markeres i utlegget. ==IC-extract (Ekstrahering av parasitter)== Når vi simulerer skjemaet vårt i DA simulerer vi bare skjema. Dvs. transistormodeller med ideelle ledninger mellom. Simulatoren vil ikke ta hensyn til parasittiske kapasistanser og resistanser i utlegget. Slike parasitter er avhengig av hvordan transistorene er tegnet, hvor tett vi plasserer dem, hvordan vi foretar ruting osv. For å finne ut hvordan kretsen på utlegget egentlig virker må vi ekstrahere disse parasittene, importere dem i skjemaet vårt og kjøre simulering en gang til. Parasitter representerer ekstra poler, som kan føre til at systemet ikke lengre tilfredsstiller spesifikasjonene. Derfor er det viktig å simulere skjemaet med effektene fra utlegget. Lag en kopi av det originale skjemaet du tegnet i DA (Save sheet as...). Lukk det "gamle" og åpne det nye. Lag et viewpoint av det nye skjemaet. Vi skal bruke det nye skjemaet til simulering med informasjon fra utlegget. <br/> Er du i simuleringsmodus? Gå ut av simuleringsmodus. I IC Sation: #Fra paletten: Velg ''ICextract (M)'' <br/> #Lukk eventuelle åpne ''logic''. <br/> #Klikk ''Lumped'' og fyll ut dialogboksen tilsvarende figuren under. #:[[Image:extract_mask_lumped_parameters.png|440px]] #Åpne skjemaet i DA igjen og gå i simuleringsmodus. <br/> #:Skjemaet vil nå se ut omtrent som figuren under.[[Image:sch_parasitics_included.png]] #Legg til transistormodellene som skal brukes i simuleringen. <br/> #Klikk ''Lib/Temp/Inc'' og legg til følgende sti (for S35): #:<pre>$AMS_DIR/eldo/s35/cmos53tm.mod</pre> #Fra paletten, velg ''Annotations --> Merge all'' <br/> #:Informasjonen fra utlegget er nå inkludert, og fargen har skiftet fra rød til gul. #Sett opp simulering (analyser, plot) og kjør. ==Simulering med parasitteffekter som egen nettliste== AustriMicroSystems beskriver i filen ''/prog/design_kits/ams_hk_3.70/www/hitkit/hk370/icstation/icextract.html'' en metode for å lage en selvstendig nettliste for krets med parasittiske effekter ekstrahert fra layout. Denne simuleres så i DA-IC ved å slå av generering av netlist (''Session->Environment->Run Sim'') og så kjøre simulering hver gang man har ekstrahert på ny. Et viktig tips er å kjøre ekstrahering fra pull-down menyene ''Extract->Mask-Lumped eller Extract->Mask->Distributed'' istedenfor å velge tilsvarende fra paletten. Dermed får man satt de riktige default verdier, og scriptet rewrite_netlist kalles automatisk for nødvendig konvertering av bl.a. modellnavn og måleenheter. Nettlisten som kommer ut inneholder kretsen i en subscircuit. Ved å kommentere vekk linjene med .subckt og .ends kan nettlisten kopieres over nettlisten generert av DA-IC og simuleres med samme plot og målinger. Alternativt kan man i DA-IC velge den ekstraherte nettlisten i ''Setup->Session->Environment''. [[Category:Mikroelektronikk]] 22eb91c3b3f998e8a4446baba158bab6e60f9a64 File:Setup LVS.png 6 293 1202 2010-03-12T15:36:25Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Setup Trace Properties.png 6 294 1203 2010-03-12T15:36:50Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Coming to CERN 0 203 1208 726 2010-03-22T15:06:44Z Dfe002 7 /* Documents to bring */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this) *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. == ALICE shiftwork == * Have a look into the [http://www-linux.gsi.de/~garabat/meu/ShiftGuide.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 5 September 2009 (UTC) 29c09db2211e6acc762c8a677c28e2cae22f45af 1209 1208 2010-03-22T15:40:44Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. Outside of the airport, take Bus 28, Direction: Meyrin-Village. Change to bus 56 Bus, Direction: CERN after a few bus stops. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this) *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 5 September 2009 (UTC) 78def1f16531c5dcfa9d40d0153a45eec8f98000 Coming to CERN 0 203 1210 1209 2010-03-22T15:53:09Z Dfe002 7 /* How to get to CERN */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this) *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 5 September 2009 (UTC) 062737a2d62968576536b5472286ac98213cfe69 1211 1210 2010-03-22T15:55:15Z Dfe002 7 /* What to do first at CERN */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 12:44, 5 September 2009 (UTC) 4062f7a80916f7532b3668a3a791758f64d09ac9 1212 1211 2010-03-22T15:56:02Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 15:56, 22 March 2010 (UTC) a24870272652bddb9aa069c10056ffe58cc35d22 1235 1212 2010-04-16T14:01:15Z Dfe002 7 /* To do shifts */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: [http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/] == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 15:56, 22 March 2010 (UTC) 321ceb5b01704bbb71305364378f88081ac38167 1236 1235 2010-04-16T14:02:33Z Dfe002 7 /* Documents to bring */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 * In addition it seems that you now need a filled ALICE registration form as well: ** [http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html] == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: [http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/] == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 15:56, 22 March 2010 (UTC) 52748e12e2c78a7b3209be806a7de36dea3264e3 1237 1236 2010-04-16T14:03:09Z Dfe002 7 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 15:56, 22 March 2010 (UTC) 3b65e7df19351dcd61db18da18d18f81422b63ad 1238 1237 2010-04-16T14:35:04Z Dfe002 7 /* To do shifts */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 15:56, 22 March 2010 (UTC) 41a1b8332f0c34d457b5b460950314a92e6457c9 Cadence Virtuoso overview 0 38 1213 76 2010-03-23T10:52:06Z Lce042 43 wikitext text/x-wiki =Building and simulating a simple CMOS inverter in Cadence Virtuoso= ==Starting up== To invoke Cadence Virtuoso, type the following from unix shell ssh -X mikroserver2 source /prog/design_kits/cadence_init/cshrc.cadence.ams ams_cds -tech c35b4 -nologo -mode fb Virtuoso Mixed Signal Design Environment should now start up: <img src="uploads/icms_uppstart.JPG" /> In the "icms" dialog box, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach an existing techfile". Then click the OK button. When asked for technology, choose TECH_C35B4. <img src="uploads/new_library.JPG" /> After successfully creating the new library, it is time to create your first design. In the "icms" dialog box, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name (for example "torcell", as I did). You must also specify which library the design belongs to, and here you specify the library that you have just created (in my case, TORLIB). <img src="uploads/create_new_file.JPG" /> Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: <img src="uploads/virtuoso_schematic_editor.JPG" /> ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos" (for n-type transistor) or "pmos" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. <img src="uploads/library_browser.JPG" /> 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. For the transistors, set the "Width" and "Lenght" properties to "4u" and "1u". For the pmos transistor, set the "Model name" property to "modp". For the nmos transistor, set the "Model name" property to "modn". As we will see later, the "modn" and "modp" models correspond to SPICE simulation models used by the simulator in the Analog Environment. <img src="uploads/edit_object_properties.JPG" /> <img src="uploads/edit_object_prop_pmos.JPG" /> 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Tools > Analog Environment". The "Virtuoso Analog Environment" should now come up: <img src="uploads/analog_env_1.JPG" /> ==Simulating the design== 8. Choose "Setup > Simulator/Directory/Host" and set spectreS as your simulator. 9. Choose "Setup > Model Path" and add directory "/prog/hk_37/spectreS/c35/cmos53/tm" to your model path. 10. Choose "Simulation > Netlist > Create Raw". 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. <img src="uploads/choosing_analyses.JPG" /> <img src="uploads/select_comp_parameter.JPG" /> The analog environment should now look like this: <img src="uploads/analog_env_2.JPG" /> 13. Choose "Simulation > Run". 14. After the simulation has completed, choose "Results > Plot Outputs > DC". The outputs should look like this: <img src="uploads/plot_output_dc.JPG" /> To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. <img src="uploads/add_pin.JPG" /> After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". <img src="uploads/create_cellview_from_cellview.JPG" /> Now press OK: <img src="uploads/symbol_generation_options.JPG" /> Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: <img src="uploads/symbol_editor.JPG" /> Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] aadb19af8854970c5f9014ef4a465802fc3b24e8 1221 1213 2010-03-25T13:18:50Z Lce042 43 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== To invoke Cadence Virtuoso, type the following from unix shell ssh -X mikroserver2 source /prog/design_kits/cadence_init/cshrc.cadence.ams ams_cds -tech c35b4 -nologo -mode fb Virtuoso Mixed Signal Design Environment should now start up: <img src="uploads/icms_uppstart.JPG" /> In the "icms" dialog box, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach an existing techfile". Then click the OK button. When asked for technology, choose TECH_C35B4. <img src="uploads/new_library.JPG" /> After successfully creating the new library, it is time to create your first design. In the "icms" dialog box, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name (for example "torcell", as I did). You must also specify which library the design belongs to, and here you specify the library that you have just created (in my case, TORLIB). <img src="uploads/create_new_file.JPG" /> Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: <img src="uploads/virtuoso_schematic_editor.JPG" /> ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos" (for n-type transistor) or "pmos" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. <img src="uploads/library_browser.JPG" /> 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. For the transistors, set the "Width" and "Lenght" properties to "4u" and "1u". For the pmos transistor, set the "Model name" property to "modp". For the nmos transistor, set the "Model name" property to "modn". As we will see later, the "modn" and "modp" models correspond to SPICE simulation models used by the simulator in the Analog Environment. <img src="uploads/edit_object_properties.JPG" /> <img src="uploads/edit_object_prop_pmos.JPG" /> 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Tools > Analog Environment". The "Virtuoso Analog Environment" should now come up: <img src="uploads/analog_env_1.JPG" /> ==Simulating the design== 8. Choose "Setup > Simulator/Directory/Host" and set spectreS as your simulator. 9. Choose "Setup > Model Path" and add directory "/prog/hk_37/spectreS/c35/cmos53/tm" to your model path. 10. Choose "Simulation > Netlist > Create Raw". 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. <img src="uploads/choosing_analyses.JPG" /> <img src="uploads/select_comp_parameter.JPG" /> The analog environment should now look like this: <img src="uploads/analog_env_2.JPG" /> 13. Choose "Simulation > Run". 14. After the simulation has completed, choose "Results > Plot Outputs > DC". The outputs should look like this: <img src="uploads/plot_output_dc.JPG" /> To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. <img src="uploads/add_pin.JPG" /> After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". <img src="uploads/create_cellview_from_cellview.JPG" /> Now press OK: <img src="uploads/symbol_generation_options.JPG" /> Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: <img src="uploads/symbol_editor.JPG" /> Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 5a30b8336fa6afaa5803391c61d9f8b5af6654b4 1222 1221 2010-03-25T13:25:56Z Lce042 43 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 source /prog/design_kits/cadence_init/cshrc.cadence.ams ams_cds -tech c35b4 -nologo -mode fb Virtuoso Mixed Signal Design Environment should now start up: <img src="uploads/icms_uppstart.JPG" /> In the "icms" dialog box, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach an existing techfile". Then click the OK button. When asked for technology, choose TECH_C35B4. <img src="uploads/new_library.JPG" /> After successfully creating the new library, it is time to create your first design. In the "icms" dialog box, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name (for example "torcell", as I did). You must also specify which library the design belongs to, and here you specify the library that you have just created (in my case, TORLIB). <img src="uploads/create_new_file.JPG" /> Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: <img src="uploads/virtuoso_schematic_editor.JPG" /> ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos" (for n-type transistor) or "pmos" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. <img src="uploads/library_browser.JPG" /> 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. For the transistors, set the "Width" and "Lenght" properties to "4u" and "1u". For the pmos transistor, set the "Model name" property to "modp". For the nmos transistor, set the "Model name" property to "modn". As we will see later, the "modn" and "modp" models correspond to SPICE simulation models used by the simulator in the Analog Environment. <img src="uploads/edit_object_properties.JPG" /> <img src="uploads/edit_object_prop_pmos.JPG" /> 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Tools > Analog Environment". The "Virtuoso Analog Environment" should now come up: <img src="uploads/analog_env_1.JPG" /> ==Simulating the design== 8. Choose "Setup > Simulator/Directory/Host" and set spectreS as your simulator. 9. Choose "Setup > Model Path" and add directory "/prog/hk_37/spectreS/c35/cmos53/tm" to your model path. 10. Choose "Simulation > Netlist > Create Raw". 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. <img src="uploads/choosing_analyses.JPG" /> <img src="uploads/select_comp_parameter.JPG" /> The analog environment should now look like this: <img src="uploads/analog_env_2.JPG" /> 13. Choose "Simulation > Run". 14. After the simulation has completed, choose "Results > Plot Outputs > DC". The outputs should look like this: <img src="uploads/plot_output_dc.JPG" /> To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. <img src="uploads/add_pin.JPG" /> After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". <img src="uploads/create_cellview_from_cellview.JPG" /> Now press OK: <img src="uploads/symbol_generation_options.JPG" /> Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: <img src="uploads/symbol_editor.JPG" /> Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 92d3bf982626e6910dc1b177debdf94039de2c11 Electronics for the Time Projection Chamber (TPC) 0 4 1214 1197 2010-03-24T08:37:39Z Stud4729 6 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] <br><br> == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - seqeunce_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i><br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] <br><br> [[Category:Alice]] 86aaa032e86500090378cf3d8425c635cc574647 1215 1214 2010-03-24T08:45:01Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] <br><br> == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware.<br><br> <p>Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board.<br><br> <ul> <li>Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster.</li> <li>Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed.</li> <li>Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. </li> </ul> <br> === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> <ol>Updating the DCS boards: <li> Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> <li> Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> </ol> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... <br> === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i><br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] 9156fb39dad5b5148503ed2dee0232d1e86266be 1216 1215 2010-03-24T08:51:11Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to <b>4.1</b>. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i><br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] ecec5401c33fa4e5fd5018b51b44059834da56c0 1217 1216 2010-03-24T08:55:10Z Nfyku 4 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/messagebuffer/ CVS database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i><br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/trigger_receiver/ CVS database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/phos_bc/ CVS database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/vhdlcvs/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] fb9ea0e9c5137a0028004cd15e047818e48cb42a 1230 1217 2010-04-07T09:26:09Z Nfyku 4 Changed from CVS to SVN wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i><br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 0238a3f6aced61a5fd14d4402f537d0961a3976a Microelectronics group 0 25 1218 1187 2010-03-25T12:42:50Z Dfe002 7 /* Mikroelektronikk */ wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av matrin 09.6 XL BGA lodding maskin [[Category:Mikroelektronikk]] 186cf0eff71cae8ad09afe6247368bfdcc37afaf 1219 1218 2010-03-25T12:43:19Z Dfe002 7 /* Mikroelektronikk */ wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) [[Category:Mikroelektronikk]] cd97244bcab965d278c006f59d5bffe1d7fd300e BGA lodding 0 295 1220 2010-03-25T13:17:30Z Dfe002 7 Created page with '= Reworking = = Martin 09.6 XL machine = ==Hardware== === Gas & power === === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==...' wikitext text/x-wiki = Reworking = = Martin 09.6 XL machine = ==Hardware== === Gas & power === === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==== == Software - Easy older == === Desolder === ==== Rapid profiling ==== ==== Classic profiling ==== ==== Optimize profile ==== === Auto Vision Placer === === Despense === === Solder === === Clean Pad === c68c65b0bf34f70b98a1664a2a985b0e24cd9e06 1223 1220 2010-03-25T13:30:52Z Dfe002 7 wikitext text/x-wiki = Reworking = = Martin 09.6 XL machine = ==Hardware== === Gas & power === === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==== ==== Lenses ==== == Software - Easy older == === Desolder === ==== Rapid profiling ==== ==== Classic profiling ==== ==== Optimize profile ==== === Despense === === Auto Vision Placer === === Solder === === Clean Pad === 0c3285d04be233a53fa633caed8f928090d8cf32 1224 1223 2010-03-25T13:34:07Z Dfe002 7 wikitext text/x-wiki = Reworking = = Martin 09.6 XL machine = == Hardware == === Gas & power === === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==== ==== Lenses ==== === Handling tools === == Software - Easy older == === Desolder === ==== Rapid profiling ==== ==== Classic profiling ==== ==== Optimize profile ==== === Despense === === Auto Vision Placer === === Solder === === Clean Pad === == ReBalling == [[User:Dfe002|Dominik]] 13:34, 25 March 2010 (UTC) 8ec324e8352a183b7c3d7008d1c9c14d96e95254 1227 1224 2010-03-25T13:39:37Z Dfe002 7 Protected "[[BGA lodding]]": only for intern use ([edit=sysop] (indefinite) [move=sysop] (indefinite)) [cascading] wikitext text/x-wiki = Reworking = = Martin 09.6 XL machine = == Hardware == === Gas & power === === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==== ==== Lenses ==== === Handling tools === == Software - Easy older == === Desolder === ==== Rapid profiling ==== ==== Classic profiling ==== ==== Optimize profile ==== === Despense === === Auto Vision Placer === === Solder === === Clean Pad === == ReBalling == [[User:Dfe002|Dominik]] 13:34, 25 March 2010 (UTC) 8ec324e8352a183b7c3d7008d1c9c14d96e95254 1228 1227 2010-03-26T09:03:09Z Dfe002 7 wikitext text/x-wiki = Reworking = = Martin 09.6 XL machine = == Hardware == === Gas & power === * Open the valves on the Nitrogen bottle, the nitrogen line close the bottle (red lever), and the nitrogen line close to the soldering machine (red lever). * Open the valve for the pressurized air behind the white wall cabinet (red lever). * Switch on the soldering machine: One switch located on the bottom unit of the soldering machine, on the behind side in the middle. One switch on the DBL (the control unit, on the behind side, a bit to the right. === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==== ==== Lenses ==== === Handling tools === == Software - Easy older == === Desolder === he default profile is chosen with the hot air nozzle that you select. But for the desoldering, to create a profile, I would have a bit longer time for preheating and soldering, because you don't want to end up with a half desoldered BGA ;) The profiling will shorten the time, and we can't use the desoldered FPGA anyway, since we can't reball it. There are different profilers to create a BGA profile (rapid, classic, ...). I don't recall wich one it is, but there is one where it asks you to attach temperature probes to the top side of the BGA, and to the underside (as good as you can get it between the solderballs). You can use the teflon tape to attach the probes, but you should avoid air bubbles close to the probes under the tape. With one of the profilers you can then desolder the BGA, the profile goes through pre heating and soldering state, and there is a button "solder point" which is greyed out in the beginning. During the solder phase this button becomes clickable, and you should use the dentist tools to carefully try to lift the BGA from the board. When the solder is liquid and you can lift the BGA, then you should click "solder point" and take off the BGA. Then comes a cool down phase. Then you should have a customised profile for this BGA and board. ==== Rapid profiling ==== ==== Classic profiling ==== ==== Optimize profile ==== === Despense === If you are done with test runs of placing, and plan to solder, you can use the "Dispense" to apply flux to the board with the foot pedal and the with brush. === Auto Vision Placer === Before you need to choose the placement nozzle that will hold your BGA with a vacuum. It should be square about 1x1 cm for you BGA. Loosing the silver screw on the arm over the placement nozzle and disconnect the rubber tube. Start AVP and choose the lens that your BGA fits in. I think the one that fits for you is called 'Maxi BGA'. Then you mark the outline on the PCB, we got the best results with taking the inside edges of the solder placement marks, but in theory you can also take the lands itself. You need to mark two adjacent corners and the opposing edge. Since there is no mark for the edge, you can take the line from the solder placement marks as far to the inside as you can get. When you are happy with the drawn square, you can turn on the vacuum put the BGA on the tip of the placement nozzle. Then you click "nozzle down" and mark the outline of the BGA, again two corners and one edge. Because of the fuzzy corners where the BGAs where cut/broken off, you might have set the cursor that the corner fits to the clean cut edges. THen you can place the BGA, and check if it aligns correctly. === Solder === After the placing from above, you can select the solder part. Before starting the soldering, you should check that the hot air nozzle aligns properly with the BGA, and you might have to move the arm a bit manually to get it aligned (there is a switch to turn the magnet of on the base of the arm). Then you have to check the height, that the solder nozzle doesn't touch the PCB or the BGA. In order to not bend the placement arm, put your thumb under the placement arm, and push down the red part with your pointer. You can adjust the height with the screw on the top. There shouldn't be more then 1mm between the solder nozzle and the board. Then you can click "Solder" and it will ask you if the underheater support and nozzle is in place. This is the last chance to fix it. When you click next, the machine goes through the solder profile. After soldering you can save the report as pdf somewhere (print to pdf printer). === Clean Pad === With the clean pad function the underheater is on, and you can use the hot air pen from the stand next to the PC to clean the solder rests of the PCB, also using the suction pen from the stand. The lands can come off easily if you are not careful. But if you use a new board to solder, you don't need to do this. == ReBalling == The process of attaching new solderballs to a previously desoldered BGA is called reballing. For this we need a small reballing oven, into which the BGA goes, and a mask that corresponds to the ball layout on the BGA. [[User:Dfe002|Dominik]] 09:03, 26 March 2010 (UTC) 21c47884c44b7df6ec41d59304909d676aae7d3f 1229 1228 2010-03-26T09:03:39Z Dfe002 7 /* Gas & power */ wikitext text/x-wiki = Reworking = = Martin 09.6 XL machine = == Hardware == === Gas & power === * Open the valves on the Nitrogen bottle, the nitrogen line close to the bottle (red lever), and the nitrogen line close to the soldering machine (red lever). * Open the valve for the pressurized air behind the white wall cabinet (red lever). * Switch on the soldering machine: One switch located on the bottom unit of the soldering machine, on the behind side in the middle. One switch on the DBL (the control unit, on the behind side, a bit to the right. === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==== ==== Lenses ==== === Handling tools === == Software - Easy older == === Desolder === he default profile is chosen with the hot air nozzle that you select. But for the desoldering, to create a profile, I would have a bit longer time for preheating and soldering, because you don't want to end up with a half desoldered BGA ;) The profiling will shorten the time, and we can't use the desoldered FPGA anyway, since we can't reball it. There are different profilers to create a BGA profile (rapid, classic, ...). I don't recall wich one it is, but there is one where it asks you to attach temperature probes to the top side of the BGA, and to the underside (as good as you can get it between the solderballs). You can use the teflon tape to attach the probes, but you should avoid air bubbles close to the probes under the tape. With one of the profilers you can then desolder the BGA, the profile goes through pre heating and soldering state, and there is a button "solder point" which is greyed out in the beginning. During the solder phase this button becomes clickable, and you should use the dentist tools to carefully try to lift the BGA from the board. When the solder is liquid and you can lift the BGA, then you should click "solder point" and take off the BGA. Then comes a cool down phase. Then you should have a customised profile for this BGA and board. ==== Rapid profiling ==== ==== Classic profiling ==== ==== Optimize profile ==== === Despense === If you are done with test runs of placing, and plan to solder, you can use the "Dispense" to apply flux to the board with the foot pedal and the with brush. === Auto Vision Placer === Before you need to choose the placement nozzle that will hold your BGA with a vacuum. It should be square about 1x1 cm for you BGA. Loosing the silver screw on the arm over the placement nozzle and disconnect the rubber tube. Start AVP and choose the lens that your BGA fits in. I think the one that fits for you is called 'Maxi BGA'. Then you mark the outline on the PCB, we got the best results with taking the inside edges of the solder placement marks, but in theory you can also take the lands itself. You need to mark two adjacent corners and the opposing edge. Since there is no mark for the edge, you can take the line from the solder placement marks as far to the inside as you can get. When you are happy with the drawn square, you can turn on the vacuum put the BGA on the tip of the placement nozzle. Then you click "nozzle down" and mark the outline of the BGA, again two corners and one edge. Because of the fuzzy corners where the BGAs where cut/broken off, you might have set the cursor that the corner fits to the clean cut edges. THen you can place the BGA, and check if it aligns correctly. === Solder === After the placing from above, you can select the solder part. Before starting the soldering, you should check that the hot air nozzle aligns properly with the BGA, and you might have to move the arm a bit manually to get it aligned (there is a switch to turn the magnet of on the base of the arm). Then you have to check the height, that the solder nozzle doesn't touch the PCB or the BGA. In order to not bend the placement arm, put your thumb under the placement arm, and push down the red part with your pointer. You can adjust the height with the screw on the top. There shouldn't be more then 1mm between the solder nozzle and the board. Then you can click "Solder" and it will ask you if the underheater support and nozzle is in place. This is the last chance to fix it. When you click next, the machine goes through the solder profile. After soldering you can save the report as pdf somewhere (print to pdf printer). === Clean Pad === With the clean pad function the underheater is on, and you can use the hot air pen from the stand next to the PC to clean the solder rests of the PCB, also using the suction pen from the stand. The lands can come off easily if you are not careful. But if you use a new board to solder, you don't need to do this. == ReBalling == The process of attaching new solderballs to a previously desoldered BGA is called reballing. For this we need a small reballing oven, into which the BGA goes, and a mask that corresponds to the ball layout on the BGA. [[User:Dfe002|Dominik]] 09:03, 26 March 2010 (UTC) 7911491f1fa15d1c0b6914d8389a8ee1e2a096f8 Detector lab 0 21 1225 1035 2010-03-25T13:35:58Z Dfe002 7 /* Meetings and conferences */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany === For internal use === [[material]] that can be used in official presentations. ce7b83b864e41b272f9a0755e9ad0701726ea454 1231 1225 2010-04-15T05:59:28Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 10.05. - 14.05.10: The XIV International Conference on Calorimetry in High Energy Physics - Calor2010, Beijing, China, http://bes3.ihep.ac.cn/conference/calor2010/ * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany == For internal use == [[material]] that can be used in official presentations. d9f363626b389f8a9f1d33367cb2dc5953cec5bd 1232 1231 2010-04-15T06:00:57Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian, Per-Ivar * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 10.05. - 14.05.10: The XIV International Conference on Calorimetry in High Energy Physics - Calor2010, Beijing, China, http://bes3.ihep.ac.cn/conference/calor2010/ * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany == For internal use == [[material]] that can be used in official presentations. 80bea138fe961766858b97a5e8a5134294e2f3fa Wishlist 0 196 1226 863 2010-03-25T13:37:00Z Dfe002 7 /* XYZ-table setup */ wikitext text/x-wiki Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find money for it. ==XYZ-table setup== * <s>1µm fiber to scan the detectors.</s> * <s>optical gating grid to calibrate the XYZ-table.</s> * <s>New camera for the X/Y table</s> [[User:Dfe002|Dominik]] 13:37, 25 March 2010 (UTC) 8fad1d50f4d49915efd5781c4215cc91fd3be90a DCS FAQ 0 57 1233 134 2010-04-15T14:12:41Z Nfyku 4 Changed from www to web.ift.uib.no, plus some minor formatting changes wikitext text/x-wiki [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] __TOC__ == General DCS board related questions == === What species of Linux is running on the DCS board? === The Linux on the DCS board is a compilation of several projects suited for embedded systems * Kernel: [http://www.arm.linux.org.uk/ The ARM Linux Project] with minor changes. Kernel version 2.4.21 * regular programs: [http://www.busybox.net/about.html BusyBox], The Swiss Army Knife of Embedded Linux * C library: [http://uclibc.org/about.html uClibc] === I cant find common UNIX tools like diff on the DCS board === The version of busybox included into the linux during the early days of the DCS board doesn't support commands like od, cmp and diff. An additional package contains those three programs. To install them * download the package [http://web.ift.uib.no/~kjeks/download/dcsboard-addon-0.1.tar.gz dcsboard-addon] * unzip it to the root (/) directory (the archive contains all necessary sub folders) * e.g. on the DCS board do wget -P /tmp/ http://web.ift.uib.no/~kjeks/download/dcsboard-addon-0.1.tar.gz tar xzvf /tmp/dcsboard-addon-0.1.tar.gz -C / === Can I compile programs on the DCS board? === No, the Linux on the DCS board is a light-weight operating system which just provides the environment to run programs. Of course, this could be a compiler, but this doesn't make sense. One uses a cross compiler on another system to build the executables. === What is a cross compiler? === Cross compiling means to compile and build on a build system which is different from the system the program has to run on. Each cpu architecture has its own instruction set, binary format aso. The compiler translates the program source code into machine code for a certain architecture. Most embedded systems (like the one on the DCS board) don't provide fully functional operating systems. The use of a cross compiler is a convenient tool to create executables on another workstation. The Arm Linux on the DCS board uses gcc 3.3.1 configured for arm-uclibc. === How do I install a cross compiler and use it? === The Arm Linux on the DCS board is compiled with gcc 3.3.1 and uses uclibc as standard library. This page gives just a short recipe for the installation. For further details look at the [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html DCS board Arm Linux] page. To install the compiler you have two possibilities: * The precompiled package<br>There is a precompiled package configured for <i>uclibc</i> and <i>/usr/local/arm/3.3.1</i>. The compiler has to be exactly at that place. *# Download the [http://web.ift.uib.no/~kjeks/download/arm-uclibc-3.3.1-toolchain.tar.bz2 package]. *# Create a folder /usr/local/arm on your build machine or ask your system administrator to do it for you and give you write access. *# Unpack the package tar xvjkf arm-uclibc-3.3.1-toolchain.tar.bz2 -C /usr/local/arm * Install the gcc from scratch and configure it for arm linux. There is a helper script on the [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html DCS board Arm Linux] page. In both cases you must add the compilers's binary directory to your search path. For the first it is <i>/usr/local/arm/3.3.1/bin</i>, e.g. # c-shell setenv PATH ${PATH}:/usr/local/arm/3.3.1/bin # or # bash export PATH=${PATH}:/usr/local/arm/3.3.1/bin === How can I copy the executable to the DCS board? === scp <filename> root@<address of the board>:/tmp This will place the file in the /tmp directory of the board. The better solution is to mount a network directory. Note that the /tmp directory on the board is erased each time it boots since it is not located in the flash ram. === Where are all the files from the /tmp directory after reboot === You should not place any files you want to keep in the /tmp folder since this is areased after reboot. === How do I mount a network directory on the DCS board? === This is two-fold. An extern machine has to provide the directory and the DCS board has to mount it. # The server, can be any Linux machine the board has access to<br>Usually you need root access to configure the server. #* nfs deamon has to run on the host machine #** start nfs service: <b>/sbin/service nfs start</b> #** stop nfs service: <b>/sbin/service nfs stop</b> #** status information: <b>/sbin/service nfs status</b> #* configure the allowed export directories in <b>/etc/exports</b>, e.g. with a line like<br><b>/nfs_export/dcscard dcs0034(rw)</b><br>the directory '/nfs_export/dcscard' can be mounted by the machine 'dcs0034' in read-write mode #* finally after altering <b>/etc/exports</b> you might have to run <b>exportfs -a</b> in order to update the list of NFS exported file systems # The client, i.e. the DCS board #* create a directory <b>/mnt</b> if it does not exist #* use the command <b>/usr/local/sbin/nfsmount</b> to mount the network directory, e.g.<br><b>/usr/local/sbin/nfsmount <host>:/nfs_export/dcscard /mnt rw</b> #* Of course you can name the mountpoint on the DCS board whatever you want === I can not write to my network directory=== check if * the server allows write access (/etc/exportfs) * the DCS board mounts the network disc in read-write mode * the permissions for the directory on the server allow write access, keep in mind that the applications on the DCS board are running under a different user than usually you are on the host machine, and thus 'others' have to have write access === How can I connect to the DCS board from a Windows computer by using the serial line? === First of all you need to have the proper serial line connector cable [http://www.kip.uni-heidelberg.de/ti/DCS-Board/current/mechanic/RS232cable01.gif Schematics]. In one side of the connector there is a small red dot. This should be connected to the connector on the short egde next to the ttc-fiber connector. Connect it to a free com-port on your pc. In windows use 'hyperterminal' with the following settings: Baud Rate: 57600 Data Bits: 8 Parity: None Stop Bits: 1 Flow Control: None == InterComLayer related questions == === What is the InterComLayer? === === Where do I have to install/run the InterComLayer? === === What tools can I use to monitor the DIM framework? === == FeeServer related questions == === What is a FeeServer? === === What is the ControlEngine? === == rcu shell related questions == The sections will be filled as the questions come in [[Category:DCS]] d263020752a0d6ebe90cc7e56f261f5ae1bc22b2 1234 1233 2010-04-15T14:16:31Z Nfyku 4 wikitext text/x-wiki [[Detector Control System (DCS) for ALICE Front-end electronics | Detector Control System]] __TOC__ == General DCS board related questions == === What species of Linux is running on the DCS board? === The Linux on the DCS board is a compilation of several projects suited for embedded systems * Kernel: [http://www.arm.linux.org.uk/ The ARM Linux Project] with minor changes. Kernel version 2.4.21 * regular programs: [http://www.busybox.net/about.html BusyBox], The Swiss Army Knife of Embedded Linux * C library: [http://uclibc.org/about.html uClibc] === I cant find common UNIX tools like diff on the DCS board === The version of busybox included into the linux during the early days of the DCS board doesn't support commands like od, cmp and diff. An additional package contains those three programs. To install them * download the package [http://web.ift.uib.no/~kjeks/download/dcsboard-addon-0.1.tar.gz dcsboard-addon] * unzip it to the root (/) directory (the archive contains all necessary sub folders) * e.g. on the DCS board do wget -P /tmp/ http://web.ift.uib.no/~kjeks/download/dcsboard-addon-0.1.tar.gz tar xzvf /tmp/dcsboard-addon-0.1.tar.gz -C / === Can I compile programs on the DCS board? === No, the Linux on the DCS board is a light-weight operating system which just provides the environment to run programs. Of course, this could be a compiler, but this doesn't make sense. One uses a cross compiler on another system to build the executables. === What is a cross compiler? === Cross compiling means to compile and build on a build system which is different from the system the program has to run on. Each cpu architecture has its own instruction set, binary format aso. The compiler translates the program source code into machine code for a certain architecture. Most embedded systems (like the one on the DCS board) don't provide fully functional operating systems. The use of a cross compiler is a convenient tool to create executables on another workstation. The Arm Linux on the DCS board uses gcc 3.3.1 configured for arm-uclibc. === How do I install a cross compiler and use it? === The Arm Linux on the DCS board is compiled with gcc 3.3.1 and uses uclibc as standard library. This page gives just a short recipe for the installation. For further details look at the [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html DCS board Arm Linux] page. To install the compiler you have two possibilities: * The precompiled package<br>There is a precompiled package configured for <i>uclibc</i> and <i>/usr/local/arm/3.3.1</i>. The compiler has to be exactly at that place. # Download the [http://web.ift.uib.no/~kjeks/download/arm-uclibc-3.3.1-toolchain.tar.bz2 package]. # Create a folder /usr/local/arm on your build machine or ask your system administrator to do it for you and give you write access. # Unpack the package #: <pre>tar xvjkf arm-uclibc-3.3.1-toolchain.tar.bz2 -C /usr/local/arm</pre> # Install the gcc from scratch and configure it for arm linux. There is a helper script on the [http://frodo.nt.fh-koeln.de/%7Etkrawuts/dcs.html DCS board Arm Linux] page. In both cases you must add the compilers's binary directory to your search path. For the first it is <i>/usr/local/arm/3.3.1/bin</i>, e.g. # c-shell setenv PATH ${PATH}:/usr/local/arm/3.3.1/bin # or # bash export PATH=${PATH}:/usr/local/arm/3.3.1/bin === How can I copy the executable to the DCS board? === scp <filename> root@<address of the board>:/tmp This will place the file in the /tmp directory of the board. The better solution is to mount a network directory. Note that the /tmp directory on the board is erased each time it boots since it is not located in the flash ram. === Where are all the files from the /tmp directory after reboot === You should not place any files you want to keep in the /tmp folder since this is areased after reboot. === How do I mount a network directory on the DCS board? === This is two-fold. An extern machine has to provide the directory and the DCS board has to mount it. # The server, can be any Linux machine the board has access to<br>Usually you need root access to configure the server. #* nfs deamon has to run on the host machine #** start nfs service: <b>/sbin/service nfs start</b> #** stop nfs service: <b>/sbin/service nfs stop</b> #** status information: <b>/sbin/service nfs status</b> #* configure the allowed export directories in <b>/etc/exports</b>, e.g. with a line like<br><b>/nfs_export/dcscard dcs0034(rw)</b><br>the directory '/nfs_export/dcscard' can be mounted by the machine 'dcs0034' in read-write mode #* finally after altering <b>/etc/exports</b> you might have to run <b>exportfs -a</b> in order to update the list of NFS exported file systems # The client, i.e. the DCS board #* create a directory <b>/mnt</b> if it does not exist #* use the command <b>/usr/local/sbin/nfsmount</b> to mount the network directory, e.g.<br><b>/usr/local/sbin/nfsmount <host>:/nfs_export/dcscard /mnt rw</b> #* Of course you can name the mountpoint on the DCS board whatever you want === I can not write to my network directory=== check if * the server allows write access (/etc/exportfs) * the DCS board mounts the network disc in read-write mode * the permissions for the directory on the server allow write access, keep in mind that the applications on the DCS board are running under a different user than usually you are on the host machine, and thus 'others' have to have write access === How can I connect to the DCS board from a Windows computer by using the serial line? === First of all you need to have the proper serial line connector cable [http://www.kip.uni-heidelberg.de/ti/DCS-Board/current/mechanic/RS232cable01.gif Schematics]. In one side of the connector there is a small red dot. This should be connected to the connector on the short egde next to the ttc-fiber connector. Connect it to a free com-port on your pc. In windows use 'hyperterminal' with the following settings: Baud Rate: 57600 Data Bits: 8 Parity: None Stop Bits: 1 Flow Control: None == InterComLayer related questions == === What is the InterComLayer? === === Where do I have to install/run the InterComLayer? === === What tools can I use to monitor the DIM framework? === == FeeServer related questions == === What is a FeeServer? === === What is the ControlEngine? === == rcu shell related questions == The sections will be filled as the questions come in [[Category:DCS]] 98f3243bb2d218150d9cd7a4760cf8596e536e23 Particle Physics group 0 137 1239 1140 2010-04-29T16:03:17Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] . We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. To get write access to these pages you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] === Job openings in our group=== There is a postdoc position in our group open, watch these pages from a link to the application. More info below. There will be more positions (PhD) in the near future. * [[Post doc, spring 2010, see the link| http://web.ift.uib.no/~lipniack/jobs/bergen_16.02.10.pdf]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 781e6e9aed9bd2462c73b1be51fec0f2dd2acf4a 1240 1239 2010-04-29T16:04:54Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[Spaatind2010|Nordic High Energy Physics Conference, Spaatind 2010]] === Job openings in our group=== There is a postdoc position in our group open, watch these pages from a link to the application. More info below. There will be more positions (PhD) in the near future. * [[Post doc, spring 2010, see the link| http://web.ift.uib.no/~lipniack/jobs/bergen_16.02.10.pdf]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] ee551282acf35178d8ee2fc1b42055a8d098f699 ATLASThesesNotes 0 234 1241 1027 2010-06-01T10:18:40Z Aaa014 28 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] === Ongoing Master theses === * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] [[Orjan Dale - Master Thesis]] b12c7f135fb8fa28d31d841ffe94413041c7d65b File:Thesis aasvold.pdf 6 296 1242 2010-06-01T11:20:32Z Aaa014 28 Neutrinos escaping detection is one of the main problems in mass reconstruction with tau leptons. They must be neglected or corrected for in some way. This thesis discusses two methods of handling the neutrinos in different ways. The Collinear Approximation (CA) builds upon the assumption that the neutrinos travel in the same direction as the visible tau decay products. The boost method neglects the neutrino energy contribution in the leading visible tau, as seen from the mother particle's reference system. The methods have been studied with simulated \Z°→τ+τ- , \H°→τ+τ-, and QCD samples, and with early data from ATLAS. This work shows that the weaknesses of CA is that the transverse angle of the transverse missing energy has to lie between the transverse angle of the two visible taus, and that it collapses with back-to-back taus in the transverse plane. A strength of the CA is that it uses the missing energy, which is all information available about the neutrinos. The CA works better for boosted taus, i.e. taus decaying from heavy particles, like H° and Z°. The weaknesses of the boost method are that it does not use the transverse missing energy information, and that the distribution is not easily fitted, but the method is still under development on these points. The strength of the boost method is that it works for all tau pairs, making it a good complimentary method to the CA. Both methods work in \Z°→τ+τ- and \H°→τ+τ- events, and can be potentially applied to other decay chains as well. In the future, many studies will include mass reconstruction from tau leptons, where both the CA and the boost method will be important methods. wikitext text/x-wiki Neutrinos escaping detection is one of the main problems in mass reconstruction with tau leptons. They must be neglected or corrected for in some way. This thesis discusses two methods of handling the neutrinos in different ways. The Collinear Approximation (CA) builds upon the assumption that the neutrinos travel in the same direction as the visible tau decay products. The boost method neglects the neutrino energy contribution in the leading visible tau, as seen from the mother particle's reference system. The methods have been studied with simulated \Z°→τ+τ- , \H°→τ+τ-, and QCD samples, and with early data from ATLAS. This work shows that the weaknesses of CA is that the transverse angle of the transverse missing energy has to lie between the transverse angle of the two visible taus, and that it collapses with back-to-back taus in the transverse plane. A strength of the CA is that it uses the missing energy, which is all information available about the neutrinos. The CA works better for boosted taus, i.e. taus decaying from heavy particles, like H° and Z°. The weaknesses of the boost method are that it does not use the transverse missing energy information, and that the distribution is not easily fitted, but the method is still under development on these points. The strength of the boost method is that it works for all tau pairs, making it a good complimentary method to the CA. Both methods work in \Z°→τ+τ- and \H°→τ+τ- events, and can be potentially applied to other decay chains as well. In the future, many studies will include mass reconstruction from tau leptons, where both the CA and the boost method will be important methods. 59f70b640efd6ce01e4942f028757662c53a875e File:Masteroppgave.pdf 6 297 1243 2010-06-01T12:05:39Z Aaa014 28 Hensikten med denne masteroppgaven er aa lage en laboratorieveiledning til en o�velse i et fag for laveregradstudenter ved Universitetet i Bergen. Foruten aa fi�nne en interessant fysisk verdi er hovedhensikten at studentene skal laere behandle resultatene paa en hen- siktsmessig maate. Dette innebaerer blant annet aa behandle usikkerheter, aa �finne en verdi som representerer hele maaleserien og aa kunne vise resultatene paa en god maate. O�velsen gaar ut paa aa maale forholdet mellom elektronets ladning og masse, e/m, med et katodestraalero�r. I forarbeidet blir tre metoder pro�vd ut; avb�oyning av elektroner i et magnetisk felt der en verdi av avb�oyningen bestemmer radiusen, ingen avbo�yning ved kryssede E-og B-felt og avbo�yning i magnetisk felt der flere punkter blir benyttet for aa estimere radiusen. Den sistnevnte metoden gaar ut paa aa estimere sirkelbanen og dens sentrum ved hjelp av min- imalisering av chikvadratet. Denne viste seg aa bryte sammen. Kun resultatene fra den fo�rste metoden inneholdt den kjente verdien av forholdet innenfor usikkerhetsintervallet, men usikkerheten var kun en sto�rrelsesorden lavere enn verdien for forholdet. Maalingene var veldig avhengig av usikkerheten i avlesningen av y-verdiene og denne usikkerheten kunne vaert forminsket ytterligere. Den andre metoden hadde lavere usikkerhet, men inneholdt ikke den kjente verdien i usikkerhetsintervallet. Denne metoden hadde ogsaa noen utfordringer knyttet til innsamlingen av data. Derfor blir kun den f�orste meto- den gjennomgaatt i laboratorieveiledningen. Denne blir utformet med en generell teoridel som skal gj�ore studentene mentalt forberedt paa det de skal laere og den inneholder en utf�orelsesdel som skal fungere som et stillas for studentene. Der staar det hint om hvordan �ovelsen kan gjennomf�ores og sp�orsmaal til diskusjon som skal besvares. wikitext text/x-wiki Hensikten med denne masteroppgaven er aa lage en laboratorieveiledning til en o�velse i et fag for laveregradstudenter ved Universitetet i Bergen. Foruten aa fi�nne en interessant fysisk verdi er hovedhensikten at studentene skal laere behandle resultatene paa en hen- siktsmessig maate. Dette innebaerer blant annet aa behandle usikkerheter, aa �finne en verdi som representerer hele maaleserien og aa kunne vise resultatene paa en god maate. O�velsen gaar ut paa aa maale forholdet mellom elektronets ladning og masse, e/m, med et katodestraalero�r. I forarbeidet blir tre metoder pro�vd ut; avb�oyning av elektroner i et magnetisk felt der en verdi av avb�oyningen bestemmer radiusen, ingen avbo�yning ved kryssede E-og B-felt og avbo�yning i magnetisk felt der flere punkter blir benyttet for aa estimere radiusen. Den sistnevnte metoden gaar ut paa aa estimere sirkelbanen og dens sentrum ved hjelp av min- imalisering av chikvadratet. Denne viste seg aa bryte sammen. Kun resultatene fra den fo�rste metoden inneholdt den kjente verdien av forholdet innenfor usikkerhetsintervallet, men usikkerheten var kun en sto�rrelsesorden lavere enn verdien for forholdet. Maalingene var veldig avhengig av usikkerheten i avlesningen av y-verdiene og denne usikkerheten kunne vaert forminsket ytterligere. Den andre metoden hadde lavere usikkerhet, men inneholdt ikke den kjente verdien i usikkerhetsintervallet. Denne metoden hadde ogsaa noen utfordringer knyttet til innsamlingen av data. Derfor blir kun den f�orste meto- den gjennomgaatt i laboratorieveiledningen. Denne blir utformet med en generell teoridel som skal gj�ore studentene mentalt forberedt paa det de skal laere og den inneholder en utf�orelsesdel som skal fungere som et stillas for studentene. Der staar det hint om hvordan �ovelsen kan gjennomf�ores og sp�orsmaal til diskusjon som skal besvares. 2c8a73e70294635010f1cb4b56e298d48bc7c4ec 1246 1243 2010-06-02T07:15:11Z Nfyku 4 fixed æøå problem related to UTF-8 wikitext text/x-wiki Hensikten med denne masteroppgaven er å lage en laboratorieveiledning til en øvelse i et fag for laveregradstudenter ved Universitetet i Bergen. Foruten å finne en interessant fysisk verdi er hovedhensikten at studentene skal lære behandle resultatene på en hen- siktsmessig måte. Dette innebærer blant annet å behandle usikkerheter, å finne en verdi som representerer hele måleserien og å kunne vise resultatene på en god måte. øvelsen går ut på å måle forholdet mellom elektronets ladning og masse, e/m, med et katodestrålerør. I forarbeidet blir tre metoder prøvd ut; avbøyning av elektroner i et magnetisk felt der en verdi av avbøoyningen bestemmer radiusen, ingen avbøyning ved kryssede E-og B-felt og avbøyning i magnetisk felt der flere punkter blir benyttet for å estimere radiusen. Den sistnevnte metoden går ut på å estimere sirkelbanen og dens sentrum ved hjelp av min- imalisering av chikvadratet. Denne viste seg å bryte sammen. Kun resultatene fra den første metoden inneholdt den kjente verdien av forholdet innenfor usikkerhetsintervallet, men usikkerheten var kun en størrelsesorden lavere enn verdien for forholdet. Målingene var veldig avhengig av usikkerheten i avlesningen av y-verdiene og denne usikkerheten kunne vært forminsket ytterligere. Den andre metoden hadde lavere usikkerhet, men inneholdt ikke den kjente verdien i usikkerhetsintervallet. Denne metoden hadde også noen utfordringer knyttet til innsamlingen av data. Derfor blir kun den første meto- den gjennomgått i laboratorieveiledningen. Denne blir utformet med en generell teoridel som skal gjøre studentene mentalt forberedt på det de skal lære og den inneholder en utførelsesdel som skal fungere som et stillas for studentene. Der står det hint om hvordan øvelsen kan gjennomføres og spørsmål til diskusjon som skal besvares. a1867e42ec1938e2b9fc4023f928367a21bd4428 File:Thesis Svandal.pdf 6 298 1244 2010-06-01T14:04:26Z Aaa014 28 The ATLAS working group has defined some safe variables that is well understood at the ATLAS early data taking. With these safe variables they have developed some safe cuts by using TMVA, that removes approximatly 70%(Loose), 50%(Medium), and 30%(Tight) of the signal. In this thesis I have made a likelihoodfunction based on the safe variables, figure 4.19, if we make cuts on this likelihood we manage to keep the same amount of signal while we reject more background than the safe cuts do. As shown in table 4.2 a cut on this likelihoodfunction will reject 5 times more background than the loose cut, and 2 times more background than the medium cut. This means that it can be a good idea to use those likelihoodcuts instead of using the safe cuts. wikitext text/x-wiki The ATLAS working group has defined some safe variables that is well understood at the ATLAS early data taking. With these safe variables they have developed some safe cuts by using TMVA, that removes approximatly 70%(Loose), 50%(Medium), and 30%(Tight) of the signal. In this thesis I have made a likelihoodfunction based on the safe variables, figure 4.19, if we make cuts on this likelihood we manage to keep the same amount of signal while we reject more background than the safe cuts do. As shown in table 4.2 a cut on this likelihoodfunction will reject 5 times more background than the loose cut, and 2 times more background than the medium cut. This means that it can be a good idea to use those likelihoodcuts instead of using the safe cuts. 67f38a58333d8edfe5d3b51c9f15ca232b0c21fe File:Masteroppgave Olausen.pdf 6 299 1245 2010-06-02T07:07:13Z Aaa014 28 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Busy Box and related/BusyBox Registers 0 242 1247 1071 2010-06-02T09:07:15Z Nfyku 4 Added the new Trigger Mode register. Updated status register info. wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 48 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} bb460034bc66e195beb1b4e7f90a41e389dd1313 Busy Box and related 0 3 1248 1195 2010-06-02T09:16:15Z Nfyku 4 Info about the semi-multiple event buffer scheme has been added (new sparse read-out). wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 50===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 58058ca7d0d1b82335680119a9ba72212f4bfb39 1251 1248 2010-06-04T11:02:43Z Nfyku 4 added download for version 50 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 50===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now beefing read-out. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 65e7fbe2556eeee6e411495f3bbb3592c1693964 1252 1251 2010-06-04T11:04:06Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 50===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now beefing read-out. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 917261ee35cda58ead36a264774beb5ac07b7e6e 1253 1252 2010-06-04T11:17:04Z Nfyku 4 Added something about the settings needed for the new sparse mode wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 50===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now beefing read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 5c528c503a79005d86b06bc58c01e432e2ee0606 1254 1253 2010-06-09T07:15:43Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 50===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now beefing read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Download====== The new version will soon be available <!--*[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga2.bit busybox_fpga2.bit]--> ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 2b40dd2e1433d533594ee50e5eb3a004b8d7f9b2 1255 1254 2010-06-09T07:21:22Z Nfyku 4 Reverted edits by [[Special:Contributions/Nfyku|Nfyku]] ([[User talk:Nfyku|Talk]]) to last revision by [[User:St09909|St09909]] wikitext text/x-wiki == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/~st09909/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added and an updated register table exists on the wiki : [[Busy_Box_and_related/BusyBox_Registers|BusyBox Registers]] In short: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBoxUserGuide.pdf] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/~st09909/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] <!--#[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf|Busybox User Guide, Rikard Bølgen]]--> #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/~st09909/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 1fc2d0bc986ceb2694cbc22119ca35af4d19be62 1256 1255 2010-06-11T12:00:52Z Nfyku 4 Updated with revison 52 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 52===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now beefing read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Download====== The new version will soon be available *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision50/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] f056346a6bbd6a495ac1874fec49f7e1f2246725 1257 1256 2010-06-11T12:01:49Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 52===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now beefing read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Download====== The new version will soon be available *[http://web.ift.uib.no/firmware/BusyBox/revision52/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision52/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision52/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 21c90f7ad1631a0010313aaf32e7ed551d5e24bb 1258 1257 2010-06-23T07:51:01Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 53===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now beefing read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== #The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. #bb_bus_read now works correctly in busybox_tb_pkg. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision53/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision53/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] f77a207c2a17e9d9e0aa5ec537e1ea88ed7cae58 1259 1258 2010-06-23T09:20:04Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 53===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: #Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== #The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. #bb_bus_read now works correctly in busybox_tb_pkg. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision53/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision53/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision53/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] bb8dfc10676ea01f7c253db3a25c3934677eb074 User:Jma049 2 300 1249 2010-06-04T08:42:46Z Tbu082 19 Created page with 'Jørn Mæland' wikitext text/x-wiki Jørn Mæland 1e97a2f89ad9ea2a12de7ca52dd176d37e04fe83 File:Thesis Maeland.pdf 6 301 1250 2010-06-04T08:49:51Z Jma049 40 Theories that include extra dimension, may change the Planck scale to the order of the electroweak symmetry breaking scale. This may allow for the creation of black hole and string balls at particle physics experiments, like those at the Large Hadron Collider. The decay of black holes and sting balls will have unique signatures, that allows us to discover them. The main focus for this thesis have been to studying the decay of simulated black holes and string balls. Where we have been focusing on methods to remove standard model backgrounds from our signal selection. If black hole and string balls are able to be produced at the Large Hadron Collider, we conclude that ATLAS will have great discovery potential for black holes and string balls. wikitext text/x-wiki Theories that include extra dimension, may change the Planck scale to the order of the electroweak symmetry breaking scale. This may allow for the creation of black hole and string balls at particle physics experiments, like those at the Large Hadron Collider. The decay of black holes and sting balls will have unique signatures, that allows us to discover them. The main focus for this thesis have been to studying the decay of simulated black holes and string balls. Where we have been focusing on methods to remove standard model backgrounds from our signal selection. If black hole and string balls are able to be produced at the Large Hadron Collider, we conclude that ATLAS will have great discovery potential for black holes and string balls. 0ae93c7bb163bf4b64b4ff29062dfe4f5d615e40 Busy Box and related/BusyBox Registers 0 242 1260 1247 2010-06-29T07:57:02Z Nfyku 4 Updated current version to 53 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 53 |0x0022 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} a5ff826e5b933ef00189af9edee8d47131f86e6f 1262 1260 2010-08-10T11:34:50Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3051 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3053 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3054 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} c42b7e735debe534f08c26a177deae26bcd2f3aa 1265 1262 2010-08-18T13:47:08Z Nfyku 4 Corrected addresses for Event info and Event Error wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3012 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3013 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3050 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3052 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3053 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 482c170bc7e2fe8e00df9137212055c661376825 1266 1265 2010-08-18T13:50:50Z Nfyku 4 Corrected L1_msg_latency register addresses wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L0 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L0 trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L0 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3014 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3015 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3050 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3052 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3053 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} dcbf305da9bf2b02737c99bd50f49cb5c99e0797 Busy Box and related 0 3 1261 1259 2010-08-10T11:27:34Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 430ddbb6c6656806e3fcbfe05d376f03f5c881f9 1264 1261 2010-08-17T11:06:09Z Nfyku 4 Added revision 55 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======Trigger Receiver event FIFO-bug-fix====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behavior of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxUserGuide.pdf BusyBox User Guide (updated for FW rev 41)] #[[Media:Rikard_Bolgen_-_BusyBox_User_Guide.pdf‎|Master Thesis, Rikard Bølgen]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 675b2b04828bd2d45408303c769efeb6140a38a6 1333 1264 2010-09-14T14:44:03Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======Trigger Receiver event FIFO-bug-fix====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behavior of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] b8dfd6bb3666c540df6f00b3eca3c18211d0f3ec 1334 1333 2010-09-14T14:45:12Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======Trigger Receiver event FIFO-bug-fix====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behavior of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] d9598143f23aafd7ac5415bf1045a519d0bb2583 Electronics for the Time Projection Chamber (TPC) 0 4 1263 1230 2010-08-17T06:36:50Z Stud4729 6 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> '''v 1.5 (17.08.2010)'''<br> <ul> <li>Fix done by Attiq Ur Rehman:<br> There is minor change in the "fifo wrapper":<br> Line #73 new signal cnt_dn<br> Line #91 comparison with "read_counter"<br> Line #170,172,174 check of possible logical conditions<br> This file was used for the RCU firmware (from 10th July and on wards) to fix the Erroneous behavior causing busy condition. </li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.5_source_files.rar Firmware v 1.5 - VHDL files, including testbench]<br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool].<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 890c4858d5e8d9b66cd3d9552ada60b81121f002 Xilinx Tools 0 7 1267 15 2010-08-23T10:56:39Z Dfe002 7 wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way: <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: 1. Load the bit-file for the FPGA 2. Type the name of the device as you can see above in “DeviceName” 3. Load the XML configuration file 4. Type the directory where the frames are saved to 5. Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. d4fbb5d685d66f17e1396ccdc6591b0fb064100f 1268 1267 2010-08-23T10:57:46Z Dfe002 7 wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: # Load the bit-file for the FPGA # Type the name of the device as you can see above in “DeviceName” # Load the XML configuration file # Type the directory where the frames are saved to # Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. bdc91fa48753827a8c416457941a66ada91568e8 1269 1268 2010-08-23T11:16:12Z Dfe002 7 wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: # Load the bit-file for the FPGA # Type the name of the device as you can see above in “DeviceName” # Load the XML configuration file # Type the directory where the frames are saved to # Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. ===Download Section=== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/BitGui.zip BitGui.zip] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Linux.tar.gz generateConfigFiles_Linux.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Windows.rar generateConfigFiles_Windows.rar] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtCore.tar.gz libQtCore.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtGUI.tar.gz libQtGUI.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/psa3.pdf Internship Report] | [[User:Dfe002|Dominik]] 11:16, 23 August 2010 (UTC) d6e6212da5547bf4842bbd8af26f0e68d5f4fa8b 1270 1269 2010-08-23T11:34:59Z Dfe002 7 wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: # Load the bit-file for the FPGA # Type the name of the device as you can see above in “DeviceName” # Load the XML configuration file # Type the directory where the frames are saved to # Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. ===Download Section=== ====Program, libraries and instructions==== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/BitGui.zip BitGui.zip] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Linux.tar.gz generateConfigFiles_Linux.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Windows.rar generateConfigFiles_Windows.rar] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtCore.tar.gz libQtCore.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtGUI.tar.gz libQtGUI.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/psa3.pdf Internship Report] | ====Firmware packages==== =====RCU 260710===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710initconf.hex 260710initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710scrub.hex 260710scrub.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710readback.hex 260710readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710framefiles.tar.gz 260710framefiles.tar.gz]<br> =====LSR_TRG 301109===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109initconf.hex lsr_trg301109initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109scrub.hex lsr_trg301109scrub.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109readback.hex lsr_trg301109readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109framefiles.tar.gz lsr_trg301109framefiles.tar.gz]<br> [[User:Dfe002|Dominik]] 11:34, 23 August 2010 (UTC) e55063fd1b3d899e5a09b1c8a5c903145f608fbe 1271 1270 2010-08-23T11:42:09Z Dfe002 7 wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: # Load the bit-file for the FPGA # Type the name of the device as you can see above in “DeviceName” # Load the XML configuration file # Type the directory where the frames are saved to # Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. ===Download Section=== ====Program, libraries and instructions==== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/BitGui.zip BitGui.zip] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Linux.tar.gz generateConfigFiles_Linux.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Windows.rar generateConfigFiles_Windows.rar] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtCore.tar.gz libQtCore.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtGUI.tar.gz libQtGUI.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/psa3.pdf Internship Report] | ====Firmware packages==== =====RCU 260710===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710initconf.hex 260710initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710scrub.hex 260710scrub.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710readback.hex 260710readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710framefiles.tar.gz 260710framefiles.tar.gz]<br> =====LSR_TRG 301109===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109initconf.hex lsr_trg301109initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109scrub.hex lsr_trg301109scrub.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109readback.hex lsr_trg301109readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109framefiles.tar.gz lsr_trg301109framefiles.tar.gz]<br> =====GPulser 301109===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserinitconf.hex 240310gpulserinitconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserscrub.hex 240310gpulserscrub.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserreadback.hex 240310gpulserreadback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserframefiles.tar.gz 240310gpulserframefiles.tar.gz]<br> [[User:Dfe002|Dominik]] 11:42, 23 August 2010 (UTC) 3c82024eef9f4cfb275461941fed59442b1afa68 1272 1271 2010-08-24T07:45:51Z Dfe002 7 removed wrong files wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: # Load the bit-file for the FPGA # Type the name of the device as you can see above in “DeviceName” # Load the XML configuration file # Type the directory where the frames are saved to # Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. ===Download Section=== ====Program, libraries and instructions==== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/BitGui.zip BitGui.zip] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Linux.tar.gz generateConfigFiles_Linux.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/generateConfigFiles_Windows.rar generateConfigFiles_Windows.rar] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtCore.tar.gz libQtCore.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtGUI.tar.gz libQtGUI.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/psa3.pdf Internship Report] | ====Firmware packages==== =====RCU 260710===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710initconf.hex 260710initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710scrub.hex 260710scrub.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710readback.hex 260710readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710framefiles.tar.gz 260710framefiles.tar.gz]<br> =====LSR_TRG 301109===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109initconf.hex lsr_trg301109initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109readback.hex lsr_trg301109readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109framefiles.tar.gz lsr_trg301109framefiles.tar.gz]<br> =====GPulser 301109===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserinitconf.hex 240310gpulserinitconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserreadback.hex 240310gpulserreadback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserframefiles.tar.gz 240310gpulserframefiles.tar.gz]<br> [[User:Dfe002|Dominik]] 11:42, 23 August 2010 (UTC) 35326aa6b186c8edc08c4d4eff77ba44765e6dfe 1337 1272 2010-09-16T10:51:48Z Dfe002 7 updated file links wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: # Load the bit-file for the FPGA # Type the name of the device as you can see above in “DeviceName” # Load the XML configuration file # Type the directory where the frames are saved to # Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. ===Download Section=== ====Program, libraries and instructions==== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/BitGui_Linux.tar.gz BitGui_Linux.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtCore.tar.gz libQtCore.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtGUI.tar.gz libQtGUI.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/psa3.pdf Internship Report] | ====Firmware packages==== =====RCU 260710===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710initconf.hex 260710initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710scrub.hex 260710scrub.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710readback.hex 260710readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/rcu/260710framefiles.tar.gz 260710framefiles.tar.gz]<br> =====LSR_TRG 301109===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109initconf.hex lsr_trg301109initconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109readback.hex lsr_trg301109readback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/lsr_trg/lsr_trg301109framefiles.tar.gz lsr_trg301109framefiles.tar.gz]<br> =====GPulser 301109===== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserinitconf.hex 240310gpulserinitconf.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserreadback.hex 240310gpulserreadback.hex]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/fw/gpulser/240310gpulserframefiles.tar.gz 240310gpulserframefiles.tar.gz]<br> [[User:Dfe002|Dominik]] 11:42, 23 August 2010 (UTC) 7656bad4f8ff79c21c41bc0be617176b1023c4db 1338 1337 2010-09-16T11:03:19Z Dfe002 7 removed old files wikitext text/x-wiki ==Frame Generation Tool== ===General=== This tool can be used to generate frames for any Xilinx Virtex-II Pro FPGA. Therefore an XML based configuration file exists. To generate frame files the type of FPGA has to be added to the XML file. This is done in the following way:<br> <Device DeviceName="XC2VP7" DeviceID="0124A093" numFrames="1320" frameLength="106" IOBColumns="2" IOBFrames="4" IOIColumns="2" IOIFrames="22" CLBColumns="34" CLBFrames="22" BRAMColumns="6" BRAMFrames="64" BRAMICColumns="6" BRAMICFrames="22" GCLKColumns="1" GCLKFrames="4"><br> The device name can be found directly on the chip. The other values are provided in the Xilinx User Guide in the chapter “Configuration – Configuration Details”. There you will find two tables in which all frame and column sizes are listed. The device IDs you will also find in a table in this chapter. For different types of Virtex FPGAs the names of the frame types can vary. The names shown above are an example for Virtex-II Pro frames. <br> ===Creating frames=== Generating the frames is done in these steps: # Load the bit-file for the FPGA # Type the name of the device as you can see above in “DeviceName” # Load the XML configuration file # Type the directory where the frames are saved to # Press the “Split” button If the frames were generated successfully or an error occurred you will see a message. ===Creating binary command blocks=== This part can be found on the second tab on the right side. To create these command blocks just follow the steps 1-3 above. After you have done this enter the name (and path) of the command file and press the “Generate ...” button right beside. If the block was generated successfully or an error occurred you will see a message.<br> <br> ===Uploading to a dedicated location=== To load the files that were generated to the place they are needed an uploading feature was introduced. Here you enter the hostname to where you want to load the files up. Authenticating at the host is done by entering username and password. After that you are able to specify a local file/folder that has to be loaded up and a remote directory where the files/folder is saved to.<br><br> ===NOTE=== The remote directory must exist and local directories that contain subdirectories can not be loaded up<br> E.g. you want to load the files to “/tmp/test” the “test” directory has to be created before uploading. ===Download Section=== ====Program, libraries and instructions==== [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/BitGui_Linux.tar.gz BitGui_Linux.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtCore.tar.gz libQtCore.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/libQtGUI.tar.gz libQtGUI.tar.gz] | [http://web.ift.uib.no/~dominik/files/detectorlabwiki/bitgui/psa3.pdf Internship Report] | ====Firmware packages==== to come [[User:Dfe002|Dominik]] 11:03, 16 September 2010 (UTC) a7b8c430cc3de52c96206232ec5388c735c3860d The ASIM project 0 222 1273 754 2010-09-02T15:15:58Z Ako054 44 wikitext text/x-wiki == ASIM - Atmosphere Space Interaction Monitor == ASIM is an experiment for the International Space Station (ISS) external facilities on the Columbus module. ASIM is aimed at the study of high-altitude optical emissions from the stratosphere and mesosphere, the Transient Luminous Events (TLEs: Red Sprites, Blue Jets, Elves) and the Terrestrial Gamma Flashes (TGFs) (Neubert et al., 2006). ASIM has been through a Phase-A (Development and Design, 2004-2005) and a Phase-B (Breadboard and Feasibility, 2007-2009) study. In May 2009 the Program Board for Human Spaceflight and Exploration (PB-HME) decided that the ASIM payload shall be part of the ELIPS-3 program and allocated funding to ASIM from the program. A flight model of the ASIM payload will be built through Phase C/D starting early 2010. ---- [[ASIM-BGO]] [[ASIM-CZT]] [[Category:Space physics]] add19833edb2134b2630cfda6b4659950caa047b 1275 1273 2010-09-02T15:24:10Z Ako054 44 wikitext text/x-wiki == ASIM - Atmosphere Space Interaction Monitor == ASIM is an experiment for the International Space Station (ISS) external facilities on the Columbus module. ASIM is aimed at the study of high-altitude optical emissions from the stratosphere and mesosphere, the Transient Luminous Events (TLEs: Red Sprites, Blue Jets, Elves) and the Terrestrial Gamma Flashes (TGFs) (Neubert et al., 2006). ASIM has been through a Phase-A (Development and Design, 2004-2005) and a Phase-B (Breadboard and Feasibility, 2007-2009) study. In May 2009 the Program Board for Human Spaceflight and Exploration (PB-HME) decided that the ASIM payload shall be part of the ELIPS-3 program and allocated funding to ASIM from the program. A flight model of the ASIM payload will be built through Phase C/D starting early 2010. ---- [[ASIM-BGO]] [[ASIM-CZT]] [[Category:Space physics]] 66e05740fcda9ea40eb5a7fd6345c61f7225568e Category:ASIM 14 303 1276 2010-09-02T15:25:04Z Ako054 44 Created page with ' [[Category:Space physics]]' wikitext text/x-wiki [[Category:Space physics]] 40b9e39ddb6e0b105a215d7ad87854c1437f7c39 ASIM-CZT 0 304 1277 2010-09-02T15:28:37Z Ako054 44 Created page with '==CZT detector== CZT stands for [[http://en.wikipedia.org/wiki/Cadmium_zinc_telluride|Cadmium Zinc Telluride]], a semiconductor material. In ASIM context CZT is also the MXGS de…' wikitext text/x-wiki ==CZT detector== CZT stands for [[http://en.wikipedia.org/wiki/Cadmium_zinc_telluride|Cadmium Zinc Telluride]], a semiconductor material. In ASIM context CZT is also the MXGS detector with imaging capability. [[Category:ASIM]] 0e5ba61d785ce3a849a87615a17dbc903de79467 1278 1277 2010-09-02T15:29:20Z Ako054 44 wikitext text/x-wiki ==CZT detector== CZT stands for [http://en.wikipedia.org/wiki/Cadmium_zinc_telluride| Cadmium Zinc Telluride], a semiconductor material. In ASIM context CZT is also the MXGS detector with imaging capability. [[Category:ASIM]] c266ec10a58c8ce6ac1fbb7edb5779ef4d153c96 Microelectronics group 0 25 1290 1219 2010-09-07T12:30:48Z Ako054 44 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[HTL Designer]] lage firmware [[Category:Mikroelektronikk]] aa9c422cfaff4115b23a337c74da2cc63fe4e7fd 1291 1290 2010-09-07T12:31:17Z Ako054 44 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[HDL Designer]] lage firmware [[Category:Mikroelektronikk]] ae298bfc25acd9889a54dae567468716d8027eb4 Coming to CERN 0 203 1294 1238 2010-09-09T07:58:09Z Dfe002 7 added new info wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". There is a CERN shuttle bus to/from the airport ([https://espace.cern.ch/info-RegularShuttleService/default.aspx timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 15:56, 22 March 2010 (UTC) 8674753e6c86da0eb29de705d81a1a0d515fde8c PHYS222 0 202 1297 759 2010-09-13T07:39:50Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] * [[http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets]] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [[http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV]] [[Category:Mikroelektronikk]] 19e36db06dbbb1641581bfe1bdb8e305ecd52fea Detector lab 0 21 1314 1232 2010-09-14T10:42:49Z Dfe002 7 /* Our projects */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Jostein, Camilla, Kristian, Per-Ivar * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 10.05. - 14.05.10: The XIV International Conference on Calorimetry in High Energy Physics - Calor2010, Beijing, China, http://bes3.ihep.ac.cn/conference/calor2010/ * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany == For internal use == [[material]] that can be used in official presentations. d3e7dea3e694db1922ffff73989fdb6fb2253c2e 1324 1314 2010-09-14T12:43:03Z Jsa038 34 Removed Jostein from the student list. This list should be updated. wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Hege, Kristine, Njål, Stian, Lars-Halvard, Andreas, Camilla, Kristian, Per-Ivar * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 10.05. - 14.05.10: The XIV International Conference on Calorimetry in High Energy Physics - Calor2010, Beijing, China, http://bes3.ihep.ac.cn/conference/calor2010/ * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany == For internal use == [[material]] that can be used in official presentations. a2e49359b32a7970b8879fd41a73594b60e960ce File:Lønne MAPD3-N.pdf 6 307 1315 2010-09-14T11:56:25Z Plo054 39 The objective of this thesis was to characterize the MAPD3-N photodetector from Zecotek Photonics. The main parameters that have been characterized are the Absolute Gain, Photon Detection Efficiency (PDE) or spectral response, Dark current and the gain as a function of the temperature and bias voltage of the detector. wikitext text/x-wiki The objective of this thesis was to characterize the MAPD3-N photodetector from Zecotek Photonics. The main parameters that have been characterized are the Absolute Gain, Photon Detection Efficiency (PDE) or spectral response, Dark current and the gain as a function of the temperature and bias voltage of the detector. 9e6e0d03c2a5a3550b5793ba4e91d9289d440052 Documentation-list 0 211 1316 707 2010-09-14T11:59:25Z Plo054 39 wikitext text/x-wiki Feel free to add thesis/articles! ==Masterthesis== *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] *[https://wikihost.uib.no/ift/images/f/f4/L%C3%B8nne_MAPD3-N.pdf Per-Ivar Lønne: Characterization of The MAPD3-N Multipixel Avalanche Photodiode, August 2010] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout, 2008] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier, 2001] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems, 2009] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation, 2004] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies), 2009] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics, 2007] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging, 2002] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection, 1996] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter, 2008] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] '''PET''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1239645&isnumber=27794 Advantages of improved timing accuracy in PET cameras using LSO scintillator, 2002] *[http://www.iop.org/EJ/article/0031-9155/50/19/006/1.pdf First experimental results of time-of-flight reconstruction on an LSO PET scanner, 2005] *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=775565&isnumber=16852 Prospects for time-of-flight PET using LSO scintillator, 1999] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4P2S8W2-9-3&_cdi=5314&_user=107896&_orig=search&_coverDate=10%2F01%2F2007&_sk=994199997&view=c&wchp=dGLbVlz-zSkzk&md5=b4f9d0ef3f0dfb31a54c6c8dba480178&ie=/sdarticle.pdf Recent advances and future advances in time-of-flight PET, 2007] 5ed249df591739d55b80cd9825a4e505969026a2 1327 1316 2010-09-14T12:59:53Z Jsa038 34 Added Jostein's master thesis wikitext text/x-wiki Feel free to add thesis/articles! ==Masterthesis== *[https://wikihost.uib.no/ift/index.php/File:Characterization_of_Scintillation_Crystals_for_Positron_Emission_Tomography.pdf Jostein Sæterstøl: Characterization of Scintillation Crystals for Positron Emission Tomography, June 2010] *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] *[https://wikihost.uib.no/ift/images/f/f4/L%C3%B8nne_MAPD3-N.pdf Per-Ivar Lønne: Characterization of The MAPD3-N Multipixel Avalanche Photodiode, August 2010] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout, 2008] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier, 2001] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems, 2009] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation, 2004] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies), 2009] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics, 2007] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging, 2002] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection, 1996] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter, 2008] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] '''PET''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1239645&isnumber=27794 Advantages of improved timing accuracy in PET cameras using LSO scintillator, 2002] *[http://www.iop.org/EJ/article/0031-9155/50/19/006/1.pdf First experimental results of time-of-flight reconstruction on an LSO PET scanner, 2005] *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=775565&isnumber=16852 Prospects for time-of-flight PET using LSO scintillator, 1999] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4P2S8W2-9-3&_cdi=5314&_user=107896&_orig=search&_coverDate=10%2F01%2F2007&_sk=994199997&view=c&wchp=dGLbVlz-zSkzk&md5=b4f9d0ef3f0dfb31a54c6c8dba480178&ie=/sdarticle.pdf Recent advances and future advances in time-of-flight PET, 2007] a2c7fd9a04e8bc1a667dc03f9fb5ea9cb56c9cbb 1328 1327 2010-09-14T13:15:35Z Dfe002 7 changed link to Josteins thesis wikitext text/x-wiki Feel free to add thesis/articles! ==Masterthesis== *[https://wikihost.uib.no/ift/images/c/c2/Characterization_of_Scintillation_Crystals_for_Positron_Emission_Tomography.pdf Jostein Sæterstøl: Characterization of Scintillation Crystals for Positron Emission Tomography, June 2010] *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] *[https://wikihost.uib.no/ift/images/f/f4/L%C3%B8nne_MAPD3-N.pdf Per-Ivar Lønne: Characterization of The MAPD3-N Multipixel Avalanche Photodiode, August 2010] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout, 2008] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier, 2001] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems, 2009] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation, 2004] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies), 2009] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics, 2007] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging, 2002] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection, 1996] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter, 2008] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] '''PET''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1239645&isnumber=27794 Advantages of improved timing accuracy in PET cameras using LSO scintillator, 2002] *[http://www.iop.org/EJ/article/0031-9155/50/19/006/1.pdf First experimental results of time-of-flight reconstruction on an LSO PET scanner, 2005] *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=775565&isnumber=16852 Prospects for time-of-flight PET using LSO scintillator, 1999] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4P2S8W2-9-3&_cdi=5314&_user=107896&_orig=search&_coverDate=10%2F01%2F2007&_sk=994199997&view=c&wchp=dGLbVlz-zSkzk&md5=b4f9d0ef3f0dfb31a54c6c8dba480178&ie=/sdarticle.pdf Recent advances and future advances in time-of-flight PET, 2007] 1a25d7d6ccb96a3386de7ab9ac2ab0197a67884a 1329 1328 2010-09-14T13:17:16Z Dfe002 7 changed order of thesis so that newest is on top wikitext text/x-wiki Feel free to add thesis/articles! ==Masterthesis== *[https://wikihost.uib.no/ift/images/f/f4/L%C3%B8nne_MAPD3-N.pdf Per-Ivar Lønne: Characterization of The MAPD3-N Multipixel Avalanche Photodiode, August 2010] *[https://wikihost.uib.no/ift/images/c/c2/Characterization_of_Scintillation_Crystals_for_Positron_Emission_Tomography.pdf Jostein Sæterstøl: Characterization of Scintillation Crystals for Positron Emission Tomography, June 2010] *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout, 2008] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier, 2001] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems, 2009] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation, 2004] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies), 2009] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics, 2007] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging, 2002] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection, 1996] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter, 2008] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] '''PET''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1239645&isnumber=27794 Advantages of improved timing accuracy in PET cameras using LSO scintillator, 2002] *[http://www.iop.org/EJ/article/0031-9155/50/19/006/1.pdf First experimental results of time-of-flight reconstruction on an LSO PET scanner, 2005] *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=775565&isnumber=16852 Prospects for time-of-flight PET using LSO scintillator, 1999] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4P2S8W2-9-3&_cdi=5314&_user=107896&_orig=search&_coverDate=10%2F01%2F2007&_sk=994199997&view=c&wchp=dGLbVlz-zSkzk&md5=b4f9d0ef3f0dfb31a54c6c8dba480178&ie=/sdarticle.pdf Recent advances and future advances in time-of-flight PET, 2007] 0a8a622a7946dfc1e658043e060cbc86e9971f5b 1332 1329 2010-09-14T14:40:26Z Dfe002 7 added Andreas Samnøys master thesis wikitext text/x-wiki Feel free to add thesis/articles! ==Masterthesis== *[https://wikihost.uib.no/ift/images/f/f4/L%C3%B8nne_MAPD3-N.pdf Per-Ivar Lønne: Characterization of The MAPD3-N Multipixel Avalanche Photodiode, August 2010] *[https://wikihost.uib.no/ift/images/5/52/Master_Thesis_by_Andreas_Tefre_Samn%C3%B8y.pdf Andreas Tefre Samnøy: Automated XY-table for the characterisation of arrays of pixel sensors for photons and charge particles, June 2010] *[https://wikihost.uib.no/ift/images/c/c2/Characterization_of_Scintillation_Crystals_for_Positron_Emission_Tomography.pdf Jostein Sæterstøl: Characterization of Scintillation Crystals for Positron Emission Tomography, June 2010] *[https://wikihost.uib.no/ift/images/7/79/Characterization_of_Multipixel_Avalanche_Photodiodes.pdf Hege Austrheim Erdal: Characterization of Multipixel Avalanche Photodiodes, Spring 2009] ==Articles== '''MAPDs''' *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4K8R2VD-3-1&_cdi=5314&_user=107896&_orig=search&_coverDate=11%2F01%2F2006&_sk=994329998&view=c&wchp=dGLzVtb-zSkWb&md5=9c5649af6fe6c5760e2817ec59212e5f&ie=/sdarticle.pdf Three advanced designs of micro-pixel avalanche photodiodes: Their present status, maximum possibilities and limitations, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-5-B&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLbVzz-zSkWb&md5=135ecb8f64afb68d93ab23ec6bd216f4&ie=/sdarticle.pdf Longitudinally segmentednext term lead/scintillator hadron calorimeter with micro-pixel APD readout, 2008] *[http://www.gsi.de/documents/DOC-2006-Jan-140-1.pdf Very Forward Hadron Calorimeter for the CBM Experiment - Projectile Spectator Detector (PSD), 2006] *[http://sunhe.jinr.ru/struct/neeo/apd/Publications/talk-Beaune-05.pdf Talk: Three advanced designs of avalanche micro-pixel photodiodes: their history of development, present status, maximum possibilities and limitations, Beaune 05] *[http://www.ihep.su/ihep/doc_seminar/LINC-2008/2008_06_19/Sadovsky.A.pdf Talk: Hadron Calorimeters with micropixel APD readout for heavy ion experiment, Protvino 08] '''SiPMs''' *[http://www.slac.stanford.edu/pubs/icfa/fall01/paper3/paper3.pdf An advanced study of Silicon Photomultiplier, 2001] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4VM43VS-2&_user=107896&_coverDate=06%2F01%2F2009&_alid=998027297&_rdoc=3&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=7&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f3f8bf5da5da970b345625217393aa74 Novel photo-detectors and photo-detector systems, 2009] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4BT3HYY-5S&_user=107896&_coverDate=02%2F01%2F2004&_alid=998028955&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=2cc5fcfe7bb0d05500b009323f28218e Novel type of avalanche photodetector with Geiger mode operation, 2004] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4FY9J4V-5-32&_cdi=5314&_user=107896&_orig=search&_coverDate=06%2F21%2F2005&_sk=994549996&view=c&wchp=dGLbVzb-zSkWz&md5=e131c2f407708a80fb1cd6da07e891a7&ie=/sdarticle.pdf A test of silicon photomultipliersnext term as readout for PET, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4JJGFF4-3&_user=107896&_coverDate=07%2F15%2F2006&_alid=998042379&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_sort=r&_docanchor=&view=c&_ct=5&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=59c6858cad55abfed42517419cd2bd04 Status report on silicon photomultiplier development and its applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4DKD10G-2-1&_cdi=5314&_user=107896&_orig=search&_coverDate=02%2F11%2F2005&_sk=994619998&view=c&wchp=dGLbVlb-zSkzk&md5=f9fc5f4683be4f6c50888102c9516b72&ie=/sdarticle.pdf Comparison of a silicon photomultiplier to a traditional vacuum photomultiplier, 2005] *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4K5SS0T-P&_user=107896&_coverDate=11%2F01%2F2006&_alid=998044663&_rdoc=1&_fmt=high&_orig=search&_cdi=5314&_docanchor=&view=c&_ct=3&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=f259adb2f5076fb2a7feaffd121314f7 Study of SiPM as a potential photodetector for scintillator readout, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0211.PDF The Calice Analog Scintillator-Tile Hadronic Calorimeter Prototype, 2006] *[http://www.slac.stanford.edu/econf/C0604032/papers/0018.pdf The Silicon Photomultiplier - A new device for High Energy Physics,. Astroparticle Physics, Industrial and Medical Applications, 2006] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4T7XGK5-3-J&_cdi=5314&_user=107896&_orig=search&_coverDate=01%2F01%2F2009&_sk=994019998&view=c&wchp=dGLzVtb-zSkzk&md5=59bbe4b777d393a7df923b76c9056751&ie=/sdarticle.pdf Advances in multipixel Geiger-mode avalanche photodiodes (silicon photomultiplies), 2009] '''MPPCs''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=4436549&isnumber=4436479 Application of novel silicon-based photo-detector to calorimetry and medical physics, 2007] '''General about the photodetectors''' *[http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJC-4V75YSS-1&_user=107896&_coverDate=07%2F31%2F2009&_alid=998034945&_rdoc=1&_fmt=high&_orig=search&_cdi=5307&_sort=r&_docanchor=&view=c&_ct=4&_acct=C000008398&_version=1&_urlVersion=0&_userid=107896&md5=ae4ed67c38b723d3d5c531a8ebbdc593 Very nice -> Silicon detector systems in high energy physics, 2009] *[http://www.ll.mit.edu/publications/journal/pdf/vol13_no2/13_2geigermode3d.pdf Geiger-Mode Avalanche Photodiodes for Three-Dimensional Imaging, 2002] *[http://www.opticsinfobase.org/viewmedia.cfm?uri=ao-35-12-1956&seq=0 Avalanche photodiodes and quenching circuits for single-photon detection, 1996] *[http://pdg.lbl.gov/2006/reviews/passagerpp.pdf Passage of particles through matter, 2008] *[http://breast.lbl.gov/~wwwinstr/publications/Papers/LBNL-51197.pdf Synergies between electromagnetic calorimetry and PET, 2002] '''PET''' *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1239645&isnumber=27794 Advantages of improved timing accuracy in PET cameras using LSO scintillator, 2002] *[http://www.iop.org/EJ/article/0031-9155/50/19/006/1.pdf First experimental results of time-of-flight reconstruction on an LSO PET scanner, 2005] *[http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=775565&isnumber=16852 Prospects for time-of-flight PET using LSO scintillator, 1999] *[http://www.sciencedirect.com/science?_ob=MImg&_imagekey=B6TJM-4P2S8W2-9-3&_cdi=5314&_user=107896&_orig=search&_coverDate=10%2F01%2F2007&_sk=994199997&view=c&wchp=dGLbVlz-zSkzk&md5=b4f9d0ef3f0dfb31a54c6c8dba480178&ie=/sdarticle.pdf Recent advances and future advances in time-of-flight PET, 2007] a7a71ac35b554a52148a8fe0eab19f319c6033da BGO-firmware-structure 0 308 1317 2010-09-14T12:00:25Z Ako054 44 Created page with '==BGO channel== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the…' wikitext text/x-wiki ==BGO channel== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 41d525125644fe70e9cea7554be091aa80bccac5 Phys117 - PET project 0 309 1319 2010-09-14T12:01:27Z Dfe002 7 initial version wikitext text/x-wiki == Goal == The aim of this phys117 course is to build a small array with 9 crystals coupled to silicon photo multipliers. For this we need to design the circuit to read out the MPPCs and include a pre amplifier there. We also need to have a light tight containment that holds the crystals and couples them to the MPPCs. To measure the physical crosstalk the crystals have to be individually wrapped. The readout of the whole system is then done in Labview through two 14 bit 2 Ghz oversampling CAEN ADCs. == Resources == c1a8c015f2d2e058a27e449cf25c62297436f122 1320 1319 2010-09-14T12:08:24Z Dfe002 7 added readout and preamp circuit schematics and layout wikitext text/x-wiki == Goal == The aim of this phys117 course is to build a small array with 9 crystals coupled to silicon photo multipliers. For this we need to design the circuit to read out the MPPCs and include a pre amplifier there. We also need to have a light tight containment that holds the crystals and couples them to the MPPCs. To measure the physical crosstalk the crystals have to be individually wrapped. The readout of the whole system is then done in Labview through two 14 bit 2 Ghz oversampling CAEN ADCs. == Resources == [http://web.ift.uib.no/~dominik/files/phys117/MPPC%20Amplifier.zip Eagle schematics and layout] [http://web.ift.uib.no/~dominik/files/phys117/Multisim.zip Multisim simulation model] 85d33ec93fd568c16ada06ccab88870493a2c4c9 1321 1320 2010-09-14T12:08:45Z Dfe002 7 fixed linebreak wikitext text/x-wiki == Goal == The aim of this phys117 course is to build a small array with 9 crystals coupled to silicon photo multipliers. For this we need to design the circuit to read out the MPPCs and include a pre amplifier there. We also need to have a light tight containment that holds the crystals and couples them to the MPPCs. To measure the physical crosstalk the crystals have to be individually wrapped. The readout of the whole system is then done in Labview through two 14 bit 2 Ghz oversampling CAEN ADCs. == Resources == [http://web.ift.uib.no/~dominik/files/phys117/MPPC%20Amplifier.zip Eagle schematics and layout]<br> [http://web.ift.uib.no/~dominik/files/phys117/Multisim.zip Multisim simulation model] ae9b9471480b30d5ea96898387b98ef901e7d56a 1348 1321 2010-09-21T09:42:25Z Dfe002 7 added link to preamp datasheet wikitext text/x-wiki == Goal == The aim of this phys117 course is to build a small array with 9 crystals coupled to silicon photo multipliers. For this we need to design the circuit to read out the MPPCs and include a pre amplifier there. We also need to have a light tight containment that holds the crystals and couples them to the MPPCs. To measure the physical crosstalk the crystals have to be individually wrapped. The readout of the whole system is then done in Labview through two 14 bit 2 Ghz oversampling CAEN ADCs. == Resources == [http://web.ift.uib.no/~dominik/files/phys117/MPPC%20Amplifier.zip Eagle schematics and layout]<br> [http://web.ift.uib.no/~dominik/files/phys117/Multisim.zip Multisim simulation model] [http://www.farnell.com/datasheets/92509.pdf AD8000YDZ preamp datasheet] 818b255af79d843b74a447d61f86a3bf555a8700 1349 1348 2010-09-21T09:42:39Z Dfe002 7 /* Resources */ wikitext text/x-wiki == Goal == The aim of this phys117 course is to build a small array with 9 crystals coupled to silicon photo multipliers. For this we need to design the circuit to read out the MPPCs and include a pre amplifier there. We also need to have a light tight containment that holds the crystals and couples them to the MPPCs. To measure the physical crosstalk the crystals have to be individually wrapped. The readout of the whole system is then done in Labview through two 14 bit 2 Ghz oversampling CAEN ADCs. == Resources == [http://web.ift.uib.no/~dominik/files/phys117/MPPC%20Amplifier.zip Eagle schematics and layout]<br> [http://web.ift.uib.no/~dominik/files/phys117/Multisim.zip Multisim simulation model]<br> [http://www.farnell.com/datasheets/92509.pdf AD8000YDZ preamp datasheet]<br> 36415c17a54999e1372560899d1ae3d7c3633fa1 File:Characterization of Scintillation Crystals for Positron Emission Tomography.pdf 6 311 1325 2010-09-14T12:46:07Z Jsa038 34 The main purpose of this thesis has been to characterize BGO and LYSO crystals of different sizes with respect to decay time and energy resolution. BGO crystals have been used as a reference material. The work presented here is part of a research project initiated by the Department of Physics and Technology, University of Bergen, and the Department of Radiology, Haukeland University Hospital. The project is entitled “Improved diagnostics in Positron Emission Tomography (PET) through the extraction of temporal characteristics from detector system and tissue.” The main objective of the project is to use temporal information to improve sensitivity and specificity in imaging with PET technology. For the BGO crystals, a decay time of 305 +/- 6 ns has been found. The energy resolution measured with the use of the best optical grease was 16.6 +/- 0.1%. Ten small (2x2x16 mm3) LYSO crystals have been found to have a decay time of 47.0 +/- 0.3 ns. The best obtained energy resolution for these crystals is 13.3 +/- 0.2%. The larger crystals generally show a somewhat longer decay time. The 5x5x20 mm3 crystals show decay times of 48.0 to 48.5 ns. Of the crystal sizes tested, the 5x5x20 mm3 crystals show the best energy resolution. With the use of optical grease, an energy resolution of 11.4 +/- 0.1% has been measured. The linearity of the energy spectra has been investigated by the use of two different radioactive sources with a total of three different energy peaks. The linearity is very good both for the BGO and LYSO crystals. A qualitative investigation of the interaction efficiency of LYSO crystals of different sizes has been performed. The number of counts in the photopeak is compared to the total number of counts in the spectrum. No apparent difference is found increasing crystal length. The thickness of the crystal influences the interaction efficiency greatly. In addition to the characterization of different crystals, an introductory experiment concerning the rate of single, random, and true counts as a function of the activity has been performed in the PET scanner at the PET centre at Haukeland University Hospital (HUH). wikitext text/x-wiki The main purpose of this thesis has been to characterize BGO and LYSO crystals of different sizes with respect to decay time and energy resolution. BGO crystals have been used as a reference material. The work presented here is part of a research project initiated by the Department of Physics and Technology, University of Bergen, and the Department of Radiology, Haukeland University Hospital. The project is entitled “Improved diagnostics in Positron Emission Tomography (PET) through the extraction of temporal characteristics from detector system and tissue.” The main objective of the project is to use temporal information to improve sensitivity and specificity in imaging with PET technology. For the BGO crystals, a decay time of 305 +/- 6 ns has been found. The energy resolution measured with the use of the best optical grease was 16.6 +/- 0.1%. Ten small (2x2x16 mm3) LYSO crystals have been found to have a decay time of 47.0 +/- 0.3 ns. The best obtained energy resolution for these crystals is 13.3 +/- 0.2%. The larger crystals generally show a somewhat longer decay time. The 5x5x20 mm3 crystals show decay times of 48.0 to 48.5 ns. Of the crystal sizes tested, the 5x5x20 mm3 crystals show the best energy resolution. With the use of optical grease, an energy resolution of 11.4 +/- 0.1% has been measured. The linearity of the energy spectra has been investigated by the use of two different radioactive sources with a total of three different energy peaks. The linearity is very good both for the BGO and LYSO crystals. A qualitative investigation of the interaction efficiency of LYSO crystals of different sizes has been performed. The number of counts in the photopeak is compared to the total number of counts in the spectrum. No apparent difference is found increasing crystal length. The thickness of the crystal influences the interaction efficiency greatly. In addition to the characterization of different crystals, an introductory experiment concerning the rate of single, random, and true counts as a function of the activity has been performed in the PET scanner at the PET centre at Haukeland University Hospital (HUH). 3fd95b65919160cfa57ad92625e1638331fe08ec 1326 1325 2010-09-14T12:57:45Z Jsa038 34 Protected "[[File:Characterization of Scintillation Crystals for Positron Emission Tomography.pdf]]" ([move=sysop] (indefinite)) wikitext text/x-wiki The main purpose of this thesis has been to characterize BGO and LYSO crystals of different sizes with respect to decay time and energy resolution. BGO crystals have been used as a reference material. The work presented here is part of a research project initiated by the Department of Physics and Technology, University of Bergen, and the Department of Radiology, Haukeland University Hospital. The project is entitled “Improved diagnostics in Positron Emission Tomography (PET) through the extraction of temporal characteristics from detector system and tissue.” The main objective of the project is to use temporal information to improve sensitivity and specificity in imaging with PET technology. For the BGO crystals, a decay time of 305 +/- 6 ns has been found. The energy resolution measured with the use of the best optical grease was 16.6 +/- 0.1%. Ten small (2x2x16 mm3) LYSO crystals have been found to have a decay time of 47.0 +/- 0.3 ns. The best obtained energy resolution for these crystals is 13.3 +/- 0.2%. The larger crystals generally show a somewhat longer decay time. The 5x5x20 mm3 crystals show decay times of 48.0 to 48.5 ns. Of the crystal sizes tested, the 5x5x20 mm3 crystals show the best energy resolution. With the use of optical grease, an energy resolution of 11.4 +/- 0.1% has been measured. The linearity of the energy spectra has been investigated by the use of two different radioactive sources with a total of three different energy peaks. The linearity is very good both for the BGO and LYSO crystals. A qualitative investigation of the interaction efficiency of LYSO crystals of different sizes has been performed. The number of counts in the photopeak is compared to the total number of counts in the spectrum. No apparent difference is found increasing crystal length. The thickness of the crystal influences the interaction efficiency greatly. In addition to the characterization of different crystals, an introductory experiment concerning the rate of single, random, and true counts as a function of the activity has been performed in the PET scanner at the PET centre at Haukeland University Hospital (HUH). 3fd95b65919160cfa57ad92625e1638331fe08ec File:Master Thesis by Andreas Tefre Samnøy.pdf 6 312 1331 2010-09-14T14:38:58Z Dfe002 7 Master Thesis by Andreas Tefre Samnøy wikitext text/x-wiki Master Thesis by Andreas Tefre Samnøy 14d6e303de47d297175d9321f9dbe083e9d31e76 File:BusyBoxUserGuide.pdf 6 313 1335 2010-09-14T14:48:26Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 VHDL 0 315 1353 2010-09-28T14:35:05Z Ako054 44 Created page with '==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it…' wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls b4c0ebfc15e1927654f77ba56ac18ed3a5c7cfae 1354 1353 2010-09-28T16:30:08Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> entity nand2 is port(a,b: in std logic; q: out std_logic); end nand2; architecture basic of nand2 is q <= a nand b after 2 ns; end architecture nand2; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is signal int_en : std:logic; sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb); end architecture srlatch </pre> 0c89a73ef8ee66a42ea052654356b1f13f448dd9 1355 1354 2010-09-28T16:31:16Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> entity nand2 is port(a,b: in std logic; q: out std_logic); end nand2; architecture basic of nand2 is q <= a nand b after 2 ns; end architecture nand2; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture srlatch </pre> 34016e732cd1b3914449044f081dd7b51642a8d5 1356 1355 2010-09-28T17:50:22Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> d1814255c8b50af8ef8f8b01041c58cdd7c4372c 1357 1356 2010-09-29T09:41:49Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> 0c15c99ed8bd5465b66c79b9817fce62ad2c1527 1358 1357 2010-09-29T13:29:46Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== <pre> procedure proc_name is variable total : real :=0.0; begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </per> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> 132ab5b9fc442d0ac1694cd903740ff82005acd6 VHDL 0 315 1359 1358 2010-09-29T13:30:29Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== <pre> procedure proc_name is variable total : real :=0.0; begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </pre> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> f0332db8dedeb1b08e1cb9cc45ddd840df567fc3 1360 1359 2010-09-29T13:55:01Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== variables etc. defined in the header are local variables. <pre> procedure proc_name is variable total : real :=0.0; --this is a local variable! begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </pre> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. ====package declaration==== the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. it defines the interface to a package. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> ====package body==== no package body is needed if pkg declaration contains other kinds of declarations like types, signals or fully specified constants. in case of subprograms body needed to fill in missing informations. items declared in body must include full declaration of subprograms as they are in the pkg declaration. that means that types, modes, default constants... must bee repeated exactly. ===components=== f09e1dc71326a555d203d79c89d4add703079562 1361 1360 2010-09-29T14:10:18Z Ako054 44 /* components */ wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== variables etc. defined in the header are local variables. <pre> procedure proc_name is variable total : real :=0.0; --this is a local variable! begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </pre> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. ====package declaration==== the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. it defines the interface to a package. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> ====package body==== no package body is needed if pkg declaration contains other kinds of declarations like types, signals or fully specified constants. in case of subprograms body needed to fill in missing informations. items declared in body must include full declaration of subprograms as they are in the pkg declaration. that means that types, modes, default constants... must bee repeated exactly. ===components=== to build hierarchical designs, used to describe interconnections in subsystems in a design. component declarations are written in the declarative part of the architecture (before the '''''begin'''''). bafc2dad4dc1727a62bfbd8128af7dcd80268aa2 1362 1361 2010-09-29T14:27:33Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== variables etc. defined in the header are local variables. <pre> procedure proc_name is variable total : real :=0.0; --this is a local variable! begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </pre> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. ====package declaration==== the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. it defines the interface to a package. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> ====package body==== no package body is needed if pkg declaration contains other kinds of declarations like types, signals or fully specified constants. in case of subprograms body needed to fill in missing informations. items declared in body must include full declaration of subprograms as they are in the pkg declaration. that means that types, modes, default constants... must bee repeated exactly. ===components=== to build hierarchical designs, used to describe interconnections in subsystems in a design. component declarations are written in the declarative part of the architecture (before the ''begin''). it is an alternative to use entity declarations (see structural design). an entity declaration defines a real module, it's a separate design. a component declaration defines a virtual module in the architecture body. "for this architecture we assume there is a module specified by this component". 4f00112cef7b274b298bb4d94818581652628d66 1364 1362 2010-10-01T12:31:01Z Ako054 44 /* components */ wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== variables etc. defined in the header are local variables. <pre> procedure proc_name is variable total : real :=0.0; --this is a local variable! begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </pre> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. ====package declaration==== the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. it defines the interface to a package. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> ====package body==== no package body is needed if pkg declaration contains other kinds of declarations like types, signals or fully specified constants. in case of subprograms body needed to fill in missing informations. items declared in body must include full declaration of subprograms as they are in the pkg declaration. that means that types, modes, default constants... must bee repeated exactly. ===components=== to build hierarchical designs, used to describe interconnections in subsystems in a design. component declarations are written in the declarative part of the architecture (before the ''begin''). it is an alternative to use entity declarations (see structural design). an entity declaration defines a real module, it's a separate design. a component declaration defines a virtual module in the architecture body. "for this architecture we assume there is a module specified by this component". ===configurations=== in a configuration file the declaration can be made in which case which entity is using which architecture. the architectures may vary e.g. in case of simulation or synthesis. A '''configuration declaration''' is a design unit which can be compiled separately. In a configuration declaration the binding of all components which are part of a certain entity can be specified. <pre> configuration config_identifier of entity_name is for architecture_name for all : component_identifier use entity lib_name.entity_name2(architecture_name2); --binding_indication end for; for bgo_channel_1 : bgo_channel use entity mxgs_bgo_lib.bgo_channel(struct) generic map( g_bgo_channel => "01" ); end for; end for; end config_identifier; </pre> 50ce62d96a0e9f138e79dcb11d7eb86ffc5c6e5d 1365 1364 2010-10-01T13:15:12Z Ako054 44 wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== variables etc. defined in the header are local variables. <pre> procedure proc_name is variable total : real :=0.0; --this is a local variable! begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </pre> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. ====package declaration==== the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. it defines the interface to a package. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> ====package body==== no package body is needed if pkg declaration contains other kinds of declarations like types, signals or fully specified constants. in case of subprograms body needed to fill in missing informations. items declared in body must include full declaration of subprograms as they are in the pkg declaration. that means that types, modes, default constants... must bee repeated exactly. ===components=== to build hierarchical designs, used to describe interconnections in subsystems in a design. component declarations are written in the declarative part of the architecture (before the ''begin''). it is an alternative to use entity declarations (see structural design). an entity declaration defines a real module, it's a separate design. a component declaration defines a virtual module in the architecture body. "for this architecture we assume there is a module specified by this component". ===configurations=== in a configuration file the declaration can be made in which case which entity is using which architecture. the architectures may vary e.g. in case of simulation or synthesis. A '''configuration declaration''' is a design unit which can be compiled separately. In a configuration declaration the binding of all components which are part of a certain entity can be specified. also generic maps can be set. <pre> configuration config_identifier of entity_name is for architecture_name for all : component_identifier use entity lib_name.entity_name2(architecture_name2); --binding_indication end for; for bgo_channel_1 : bgo_channel use entity mxgs_bgo_lib.bgo_channel(struct) generic map( g_bgo_channel => "01" ); end for; end for; end config_identifier; </pre> 812fe920cd7b577c1e70bcd5ce0ab57f39ac7679 BGO-firmware-structure 0 308 1366 1317 2010-10-01T13:26:50Z Ako054 44 /* temperature monitor */ wikitext text/x-wiki ==BGO channel== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_bin) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 2941f7b6edb3a34ce1e3d1c4be1754208156f33b 1367 1366 2010-10-01T13:27:10Z Ako054 44 /* temperature monitor */ wikitext text/x-wiki ==BGO channel== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 187c8fe35a5efd35c84af13aa7378c81952a3aa7 1368 1367 2010-10-13T14:11:56Z Ako054 44 /* Address decoder */ wikitext text/x-wiki ==BGO channel== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' memadr_in (from dpu_if/user) memdat_out_X (from modules) clk etc. '''output: ''' memadr_out (to modules) di_memdat_in (to dpu_if) * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 927bc689a4cea27af04e4ac80d1dbc29f19ea56e 1369 1368 2010-10-13T14:12:46Z Ako054 44 /* Address decoder */ wikitext text/x-wiki ==BGO channel== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) f9cd7b349a04b7b1914456707aceb05a3db57764 1370 1369 2010-10-13T14:13:02Z Ako054 44 /* Address decoder */ wikitext text/x-wiki ==BGO channel== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) d4395d2604c2dd57c6854b80f9d75cb145c9be36 1371 1370 2010-10-13T14:15:39Z Ako054 44 /* BGO channel */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) d58df4bbff1fde94ec5b7344a44134be4faefdc3 1372 1371 2010-10-13T14:16:01Z Ako054 44 /* MUX */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) a7195cc3a3bced2a98e820cb2cffbc548dab65a9 1373 1372 2010-10-13T14:16:21Z Ako054 44 /* Address decoder */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 97738f3870459f80466d732f7bf1d5242bfe4fdb 1374 1373 2010-10-13T14:17:28Z Ako054 44 /* Binning control module (BCM) */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 01da9773e86d379ffb64bc915bb341a8ddb84b00 1375 1374 2010-10-13T14:17:53Z Ako054 44 /* DPU interface */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) c7c3c3c79761adf231f77b4c6197ee63fee28367 1376 1375 2010-10-13T14:18:10Z Ako054 44 /* Temperature monitor */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 8560394ec7105a64b760ccf36217ea940f523a59 1377 1376 2010-10-13T14:33:43Z Ako054 44 /* mb_if */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm. basically a translator. translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) cb406c34296199ca0415effce19ceaa78ec93d9d 1378 1377 2010-10-13T14:37:05Z Ako054 44 /* mb_if */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====mb_if==== Memory bus interface. including a control register and a fsm. basically a translator. translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) b39fca680985df0fbcee5f583b12d5297fd2f27f 1379 1378 2010-10-13T14:37:52Z Ako054 44 /* mb_if */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface=== ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) a921ab8cfc3a5f32c323c0016532a859acb97af9 1380 1379 2010-10-13T14:39:31Z Ako054 44 /* memory bus interface */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface (mb_if)=== see mb_if ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 6f990f3513ebf25b9e4b98f92978d0cbbbbe710a 1381 1380 2010-10-13T14:42:48Z Ako054 44 /* memory bus interface (mb_if) */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in BGO channel ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. * asim_common_lib * 2008 by yngve (auto) 01fe5c3f13ab5fde40e826c4b0d9b983aa8af548 1382 1381 2010-10-13T14:44:05Z Ako054 44 /* memory bus interface */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in BGO channel ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 9d7ce1e64e577fc98fa64cebdf823e9a68a0ee92 1383 1382 2010-10-13T14:44:18Z Ako054 44 /* memory bus interface */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in BGO channel ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===memory bus interface=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 794f13646ffa71ed249a7c27c0d41c34e59bc862 1384 1383 2010-10-13T14:44:42Z Ako054 44 /* memory bus interface */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in BGO channel ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 b51a97ba090cac5a77b1be208056bc0638170216 1385 1384 2010-10-13T14:45:57Z Ako054 44 /* memory bus interface (mb_if) */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29_3|mb_if ]] in Temperature Monitor ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 6b105478ad998718e52ace1542772f6ab47e6cf3 1386 1385 2010-10-13T14:46:20Z Ako054 44 /* Memory bus interface (mb_if) */ wikitext text/x-wiki ==BGO channel (bgo_channel_[0-2])== There are 3 BGO channels, each interfacing one PMT. Each BGO channel is hosting an own FIFO to store the event data. The readout of the fifos is controlled by the MUX block. ===PMT interface=== PMT = photo multiplyer tube Taks: collects the ADC data from the detector, creates science data packets (SCDP) ans stores the data in a fifo. tasks included: lowpass filter, offset correction, tail estimation, shaping, peak detect, trigger & control. * mxgs_bgo_lib * 2009 by yngve (auto) included blocks: ====pmt_if_ctrl==== is a fsm <pre> port ( arst_n : in std_logic; -- asynchronous reset rst : in std_logic; -- synchronous reset clk : in std_logic; diff_trig : in std_logic; -- differential trigger ovf : in std_logic; -- ADC overflow peak : in std_logic; -- peak found val_trig : in std_logic; -- value trigger fast : in std_logic; -- pulse ocurred on the tail of another pulse offset_lock : in std_logic; -- offset is found load : out std_logic; -- load scdp offset_en : out std_logic; -- offset enable acc_en : in std_logic; -- baseline correction enable hug : out std_logic; -- release the peak hold register par_clr : out std_logic; -- clear paralyzation flag inhibit : in std_logic; -- inhibit further triggers smalltrig_en : in std_logic; -- enable small triggers adc_en : out std_logic; -- ADC enable smpl_mode : in std_logic; -- direct sampling mode fifo_full : in std_logic; -- fifo full flag fifo_empty : in std_logic; -- fifo empty flag smpl_trig : out std_logic -- feedthrough of ADC data to FIFO ); </pre> ====Memory bus interface (mb_if)==== see [[#Memory_bus_interface_.28mb_if.29_3|mb_if ]] in Temperature Monitor ====mov_avrg and mov_avrg8==== moving avarage. is a type of finite impulse response filter used to analyze a set of data points by creating a series of averages of different subsets of the full data set. (http://en.wikipedia.org/wiki/Moving_average) ====tailgen==== pulse tail cancellation in order to reduction of systems dead time. several filters. two separate tail estimation filters are used to enable tail cancellation of several consecutive pule tails. they will be used alternately, outputs are summed. find document "BGO extention" written by yngve for further details. ====tailgen_ctrl==== is a fsm. selcting a trigger? output= 'tg_sel' being 0 or 1 ===FIFO=== stores SCDP per channel FIFO1k48 * mxgs_bgo_lib ==MUX (bgo_mux)== coordinates data which should be read out from fifos. ... interface to the 3 fifos included in BGO_channels * mxgs_bgo_lib * 2010 by magne (auto) <pre> port( arst_n : in std_logic; -- asynchronous reset clk : in std_logic; -- clock fifo_read : in std_logic; -- read fifo from current chain data_na : out std_logic; -- data not available ch1_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 1 ch2_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 2 ch3_data : in std_logic_vector ( 47 downto 0 ); -- scdp from chain 3 dout : out std_logic_vector ( 47 downto 0 ); -- arbitrated data sfifo_empty : in std_logic_vector (1 to 3); sfifo_read : out std_logic_vector (1 to 3) ); </pre> ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) general: * mxgs_bgo_lib * 2008 by yngve ==Binning control module (BCM) (bin_ctrl_module)== the BCM generates a 2D table out of SCDP coming from the pmt_if. the table includes temporal and spectral bins. time and energy value from the SCDP are analysed and assigned to a temporal and spectral bin. that binvalue then will be incremented. there are lower and higher bondaries for the spectral bin value. if the energy value in the SCDP is outside that boundaries it will be discarded. the spectral boundaries are configurable via the mb_if. -> some kind of filter * asim_common_lib included modules: ===scdp channel mux=== ===bin address generator=== ===bin access control=== ===swing buffer=== ===bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29_3|mb_if ]] in Temperature Monitor ==DPU interface (dpu_if)== is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Temperature monitor (tmon_struct)== used for temperature compensation and housekeeping controls external MUX and a ADC. ===temperature monitor=== General description : This module is designed to control an analog mux and an ADC to capture values from three different analog sources, in this case termistor values for temperature meseurements. This module connects to the standard internal bus interface in the CZT/BGO firmware. It controls an external analog MUX and an ADC to sample three analog values representing temperatures. when the ADC data in a channel passes a certain limit an alarm is set. the limit is set by the user in the interface via the control register (mb_if) * asim_common_lib ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) general: * asim_common_lib * by yngve 2008 aff8345cb5fbfe626ea100f9fed499fb4b2deeda Detector lab 0 21 1387 1324 2010-10-18T07:16:56Z Dfe002 7 updated students wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Lars-Halvard, Andreas, Kristian, Eivind, Arild, Oliver * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 10.05. - 14.05.10: The XIV International Conference on Calorimetry in High Energy Physics - Calor2010, Beijing, China, http://bes3.ihep.ac.cn/conference/calor2010/ * 24.05. - 28.05.10: 17th IEEE NPSS Real Time Conference - RT2010, Lisboa, Portugal, Deadline 01.03.10. (http://rt2010.ipfn.ist.utl.pt/) * 20.09. - 24.09.10: TWEPP, RWTH Aachen, Germany == For internal use == [[material]] that can be used in official presentations. 356e379e1a1b46d87b8be3205d1ae0e258d2a7b6 1395 1387 2010-10-18T12:53:15Z Dfe002 7 /* Meetings and conferences */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Lars-Halvard, Andreas, Kristian, Eivind, Arild, Oliver * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 30.10. - 08.10.10: IEEE 2010 Nuclear Science Symposium and Medical Imaging Conference(http://www.nss-mic.org/2010/) == For internal use == [[material]] that can be used in official presentations. 16572a571ac28555a8801b54f86bf17c7feef530 Lab Equipment 0 111 1389 895 2010-10-18T10:19:19Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | |2x Anja |- |TTi EL302D |30V, 2A dual linear DC power supply | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 51f42cc9771bd4b906bd3355449b18ddc888f5f4 1390 1389 2010-10-18T10:20:20Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | |2x Anja |- |TTi EL302D |30V, 2A dual linear DC power supply | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | |- |ITT AX 322 |2x 30V, 2,5A | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} 06937310dc87e7aeaf0b6f70b9d50bfa56cc96f4 1391 1390 2010-10-18T10:22:48Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |USB, LabView |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |USB, Labview |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} c927a67d97f27b93f28f0f2e112aab98fe844388 1392 1391 2010-10-18T12:39:50Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} b02a0040d5a595a318f20d9675376676fbaa9752 1393 1392 2010-10-18T12:40:43Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, 5 Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} b99981fb417e835cb9fe4dfb99c5bbbe41874348 1394 1393 2010-10-18T12:44:53Z Dfe002 7 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Number !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |2 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |1 |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |1 |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |4 |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |2 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |1 |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |1 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, 5 Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} a3b1352d6a5dd5f77e02f2e285d41449a4b0b45d ASIM-CZT 0 304 1396 1278 2010-10-18T18:31:33Z Ako054 44 /* CZT detector */ wikitext text/x-wiki ==CZT detector== CZT stands for [http://en.wikipedia.org/wiki/Cadmium_zinc_telluride| Cadmium Zinc Telluride], a semiconductor material. In ASIM context CZT is also the MXGS detector with imaging capability. ==Firmware== An introduction to the CZT EBB firmware can be found here: [[CZT-firmware]] [[Category:ASIM]] 56055011c0145d0f4704328f26e524a4dfd216b0 CZT-firmware 0 316 1397 2010-10-18T18:35:06Z Ako054 44 Created page with 'List of included modules in hierachical order: ==Detector module interface (dm_if)== ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == ===xlink_rx=== ===rx register===…' wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == ===xlink_rx=== ===rx register=== ===xlink_tx=== ===tx register=== ===tx control fsm=== ==Address decoder (adrdec_bgo)== ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 27f4de16169261b06339fe9cebf7dec7dbdb0530 1398 1397 2010-10-18T18:35:37Z Ako054 44 /* Detector module interface (dm_if) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == ===xlink_rx=== ===rx register=== ===xlink_tx=== ===tx register=== ===tx control fsm=== ==Address decoder (adrdec_bgo)== ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 790fd99ec62ac3b80cd253da7ef5cce539c0463c 1399 1398 2010-10-18T18:41:51Z Ako054 44 /* Detector module interface (dm_if) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ==Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == ===xlink_rx=== ===rx register=== ===xlink_tx=== ===tx register=== ===tx control fsm=== ==Address decoder (adrdec_bgo)== ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 2aa6b5f750675d6485478c67e07eae68ea95fc7a 1400 1399 2010-10-18T18:47:47Z Ako054 44 /* XA config (xa_cfg) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ==Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == ===xlink_rx=== ===rx register=== ===xlink_tx=== ===tx register=== ===tx control fsm=== ==Address decoder (adrdec_bgo)== ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 1c5e6183b42549bcd4896a3a62a2db8519066b7c 1401 1400 2010-10-18T18:48:20Z Ako054 44 /* Hit discriminator (hit_dicr)= */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == ===xlink_rx=== ===rx register=== ===xlink_tx=== ===tx register=== ===tx control fsm=== ==Address decoder (adrdec_bgo)== ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 6ae10b4739de43ad1f87a0b8ea7fbcd7cb6b0f68 1402 1401 2010-10-18T18:49:28Z Ako054 44 /* Memory bus interface (mb_if) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == ===xlink_rx=== ===rx register=== ===xlink_tx=== ===tx register=== ===tx control fsm=== ==Address decoder (adrdec_bgo)== ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 06f2b522c6d826ea0dc61f4267dcb14afdade07b 1403 1402 2010-10-18T18:50:34Z Ako054 44 /* DPU interface (dpu_if) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 2c4e48ef04ed3b9e229ceca36f72d51aa15d9b4f 1404 1403 2010-10-18T18:51:25Z Ako054 44 /* Address decoder (adrdec_bgo) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules (pm_if_0, pm_if_1, pm_if_2, tmon or binctrl) * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 5b68c335160fe8be76e0a9beede283233aebb66c 1405 1404 2010-10-18T18:52:33Z Ako054 44 /* Address decoder (adrdec_bgo) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 77095918d9ece16e0d59f1ee27514a2add46bd43 1406 1405 2010-10-18T18:54:21Z Ako054 44 /* Binning control module (BCM) (bin_ctrl_module) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 1c7c1bb779c1ca289bd4373473168860c7abf329 1407 1406 2010-10-18T18:57:26Z Ako054 44 /* MUX (scdp_ch_mux) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== e0c0e85f8ee0e3aad309e67ccf0f2149dfa79904 1408 1407 2010-10-18T18:58:36Z Ako054 44 /* Memory bus interface (mb_if) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 37bb0ae351c98c8e54f2810f5ae2b76e1d320ec8 1409 1408 2010-10-18T18:58:43Z Ako054 44 /* Memory bus interface */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-4] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== 2a70bb762e67b0a334764a89a43079f71d7a8435 1410 1409 2010-10-18T19:05:48Z Ako054 44 /* Address decoder (adrdec_bgo) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''modules in control/status chain:''' * detector module interfaces (4 -- one per chain) * XA configuration (4 -- one per chain) * RCU master * bin control '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-9] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ===piso8_ctrl=== FSM ==Resync register== ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== d7047d049d031d02a04285ff7af14f42162448cd CZT-firmware 0 316 1411 1410 2010-10-18T19:07:48Z Ako054 44 /* Resync register */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''modules in control/status chain:''' * detector module interfaces (4 -- one per chain) * XA configuration (4 -- one per chain) * RCU master * bin control '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-9] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ===piso8_ctrl=== FSM ==Resync register== synchronizes the inputs and outputs of the FPGA with the internal clock signal. ==Clock reset (clkrst)== ==Timetag generation (tt_gen)== c590091b86fbc0969d62355498ef3f79ac593d9e 1412 1411 2010-10-18T19:08:08Z Ako054 44 /* Clock reset (clkrst) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''modules in control/status chain:''' * detector module interfaces (4 -- one per chain) * XA configuration (4 -- one per chain) * RCU master * bin control '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-9] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ===piso8_ctrl=== FSM ==Resync register== synchronizes the inputs and outputs of the FPGA with the internal clock signal. ==Clock reset (clkrst)== This module generates the clock and the reset signal for the firmware components. The signals are based on a crystal oscillator input and a global clock. ==Timetag generation (tt_gen)== 536037a3ecdff8d2df086524be1457babbb2bd1c 1413 1412 2010-10-18T19:08:23Z Ako054 44 /* Timetag generation (tt_gen) */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''modules in control/status chain:''' * detector module interfaces (4 -- one per chain) * XA configuration (4 -- one per chain) * RCU master * bin control '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-9] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ===piso8_ctrl=== FSM ==Resync register== synchronizes the inputs and outputs of the FPGA with the internal clock signal. ==Clock reset (clkrst)== This module generates the clock and the reset signal for the firmware components. The signals are based on a crystal oscillator input and a global clock. ==Timetag generation (tt_gen)== The time tag generator provides information about when an event happens. It maintains a 20-bit counter used to timestamp science events. The 20-bit time stamp then become part of the science data package (SCDP) . eb0aae82f0eaa2fa794d416805f2d96b849d50e3 1414 1413 2010-10-18T19:10:44Z Ako054 44 /* LED control */ wikitext text/x-wiki List of included modules in hierachical order: ==Detector module interface (dm_if)== interface to readout electroncs for the detector modules. Reads energy, pixel and ASIC address, in addition to multihit information. Also controls the pipelined ADC. ===Offset substract=== Finds and subtracts the offset from ADC data, ensuring a consistent mean value of zero between all four detector chains ===Hit discriminator (hit_dicr)=== determines whether there was an event or not? ===Memory bus interface (mb_if)=== for communication with user interface. including a control register and a fsm. basically a translator, translating memory data into commands for active module and delivers status reports. '''input:''' * memory address memadr_in (from adress decoder) * memory data memdat_in (from address decoder, incl. command ) * status register sr[0-3] (from logic module, e.g. tmon) * clk etc. '''output:''' * memdat_out (to address decoder, incl. answer) * control registers cr[0-3] (to logig module, incl. command) ==MUX (scdp_ch_mux)== The chain multiplexer receives the SCDP from readout chains (one chain contains 8 ASICS, that are 1024 channel) and writes data into the FIFO ==FIFO== ==DPU interface (dpu_if) == is interfacing the DPU emulator, input: commands, output: data, status * asim_common_lib <pre> port ( clk : in std_logic; -- clock arst_n : in std_logic; -- asynchronous reset memdat_in : in std_logic_vector(7 downto 0); -- memory bus data input serial_data_in : in std_logic; -- serial data input serial_strobe_in : in std_logic; -- serial strobe input serial_data_out : out std_logic; -- serial data output serial_strobe_out : out std_logic; -- serial strobe output RnW : out std_logic; -- read / write control ld_memdat : out std_logic; -- load memory data memadr_out : out std_logic_vector(13 downto 0); -- memory address memdat_out : out std_logic_vector(7 downto 0); -- memory data scdp : in std_logic_vector(47 downto 0); -- scdp input enable : in std_logic; -- enable input from DPU fifo_empty : in std_logic; -- fifo empty indicator fifo_read : out std_logic; -- fifo read enable fifo_full : in std_logic := '0'); -- fifo full indicator </pre> ===receiving:=== ====xlink_rx==== Description: receiver for "xlink", a serial data strobe encoded point to -- point communications protocol for the ASIM MXGS ====rx register==== reception register for DPU interface ===transmission:=== ====xlink_tx==== fsm ====tx register==== transmission register for DPU interface ====tx control fsm==== ==Address decoder (adrdec_bgo)== memory bus address decoder and data multiplexor * decodes the memory_address_in (memadr_in) and delivers data to called modules * the module_base address (e.g. tmon_base) is defined in the mxgs_bgo_pk package. * delivers answer (memdat, memory data) from modules '''modules in control/status chain:''' * detector module interfaces (4 -- one per chain) * XA configuration (4 -- one per chain) * RCU master * bin control '''input: ''' * memadr_in (from dpu_if/user) * memdat_out_[0-9] (from modules) * clk etc. '''output: ''' * memadr_out (to modules) * di_memdat_in (to dpu_if) ==Binning control module (BCM) (bin_ctrl_module) == The BCM delivers status reports of the collected data. It generates a 2D table out of SCDP coming from the pmt_if. This table includes temporal and spectral bins. Time and energy value from the SCDP are analyzed and assigned to a temporal and spectral bin. That bin value then will be incremented. There are lower and higher boundaries for the spectral bin value. If the energy value in the SCDP is outside the boundaries it will be discarded. The spectral boundaries are configurable via the mb_if. The result also is delivered via mb_if. ===Scdp channel mux=== ===Bin address generator=== ===Bin access control=== ===Swing buffer=== ===Bin module address arbiter=== ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==RCU master (rcumaster)== ===LED control=== FSM ===Memory bus interface (mb_if)=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ==XA config (xa_cfg)== ===XA register verification (xa_reg_verify)=== FSM, ASIC configuration register verifier ===RAM (dpram1k8)=== RAM to memorize control register, dual port RAM for volatile XA configuration data ===Memory bus interface=== see [[#Memory_bus_interface_.28mb_if.29|mb_if ]] in detector module interface ===piso8_ctrl=== FSM ==Resync register== synchronizes the inputs and outputs of the FPGA with the internal clock signal. ==Clock reset (clkrst)== This module generates the clock and the reset signal for the firmware components. The signals are based on a crystal oscillator input and a global clock. ==Timetag generation (tt_gen)== The time tag generator provides information about when an event happens. It maintains a 20-bit counter used to timestamp science events. The 20-bit time stamp then become part of the science data package (SCDP) . c9e5ae200e719a9ae3eb1f56da6f1b7b7657e136 Experimental Nuclear Physics group 0 2 1415 649 2010-11-10T16:58:29Z Dfe002 7 added focal section wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[FOCAL - Forward Calorimeter]] * [[PHOS PVSS panels]] * [[PHOS TOR]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Tips & Tricks corner]] * [[Coming to CERN]] <center>[[Image:alice.gif]]</center> bc6af98393faa7b62c0f898bffd604faa93e906a 1439 1415 2010-12-10T12:07:20Z Dfe002 7 wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[FOCAL - Forward Calorimeter]] * [[PHOS PVSS panels]] * [[PHOS TOR]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Coming to CERN]] <center>[[Image:alice.gif]]</center> c4d39310faa671270f477874f26b4836993471c1 1442 1439 2011-01-03T11:10:29Z Bwa021 51 added analysis topic wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[FOCAL - Forward Calorimeter]] * [[PHOS PVSS panels]] * [[PHOS TOR]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Analysis]] * [[Coming to CERN]] <center>[[Image:alice.gif]]</center> 28d0a56685e65943a92a1d5c25bc76cd54c594c0 FOCAL - Forward Calorimeter 0 317 1416 2010-11-10T17:00:12Z Dfe002 7 Created page with 'This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips =…' wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == 979fcfab019183a81a1c32b3a142261d3fcc971d 1418 1416 2010-11-19T12:00:07Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === First layout === == Download section == 652be70dceb3195900e5c834aee1c48aa95dc1e6 Electronics for the Time Projection Chamber (TPC) 0 4 1417 1263 2010-11-12T12:32:58Z Dfe002 7 /* Updating the Actel Firmware */ wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> '''v 1.5 (17.08.2010)'''<br> <ul> <li>Fix done by Attiq Ur Rehman:<br> There is minor change in the "fifo wrapper":<br> Line #73 new signal cnt_dn<br> Line #91 comparison with "read_counter"<br> Line #170,172,174 check of possible logical conditions<br> This file was used for the RCU firmware (from 10th July and on wards) to fix the Erroneous behavior causing busy condition. </li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.5_source_files.rar Firmware v 1.5 - VHDL files, including testbench]<br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool]. Note that version 9.0 gives errors when trying to program the FPGA. [ftp://ftp.actel.com/downloads/flashpro/FlashPro86.zip Version 8.6] is the last version that works for the Actel on the RCU.<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 254d7a9aa7d992962035339ea09c7db5278a9883 XYZ table setup 0 318 1419 2010-11-25T13:13:44Z Asa022 21 Created page with 'XY-table, readout computer - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a na…' wikitext text/x-wiki XY-table, readout computer - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: Motor controller: SMC compact, uses Venus 1 command language. Motor stages: X, Y and Z direction Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. Fibremount: Device that mounts a fibre above the left microscope ocular. Fast LED pulser: Small analogue chip that pulses an attached LED *IMAGE* Sketch of XY-table === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. *IMAGE* Picture of XY-table == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. *Image* Fibremount == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file *Image* Position flash front panel. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. *Image* Place coords front panel The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. *Image* DAQ flowchart == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. 41c7d35bccaa350e49752c59fd5fb84423daaf91 1420 1419 2010-11-25T13:14:39Z Asa022 21 wikitext text/x-wiki XY-table, readout computer - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED *IMAGE* Sketch of XY-table === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. *IMAGE* Picture of XY-table == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. *Image* Fibremount == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file *Image* Position flash front panel. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. *Image* Place coords front panel The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. *Image* DAQ flowchart == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. f8e52eceacf981729051a663da855697e26f59c4 1427 1420 2010-11-29T09:49:51Z Asa022 21 wikitext text/x-wiki XY-table, readout computer - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED *IMAGE* Sketch of XY-table === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. [[File:setup with text.PNG]] == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. *Image* Fibremount == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file *Image* Position flash front panel. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. *Image* Place coords front panel The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. *Image* DAQ flowchart == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. 9f887a6422f71d9b80f45105d0cdcd1abb2a6780 1428 1427 2010-11-29T09:51:03Z Asa022 21 wikitext text/x-wiki XY-table, readout computer - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED [[File:start_sketch.pdf]] === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. [[File:setup with text.PNG]] == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. *Image* Fibremount == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file *Image* Position flash front panel. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. *Image* Place coords front panel The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. *Image* DAQ flowchart == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. 7ae2474208718a428f486ea5b58ed059a8d4fae0 1432 1428 2010-11-29T10:24:10Z Asa022 21 wikitext text/x-wiki XY-table, readout computer - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED [[File:start_sketch.png]] === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. [[File:setup with text.PNG]] == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. [[File:fibremount2.png]] == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file [[File:Position Flash front panel.PNG]] == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. [[File:Place Coords front panel.PNG]] The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. [[File:flowchart.png]] == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. 52ddaae36b1ce2d9edc6883914b9944928842964 1433 1432 2010-11-29T10:27:26Z Asa022 21 wikitext text/x-wiki XY-table, readout computer name - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED [[File:start_sketch.png]] Figure 1: Sketch of the XY-table === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. [[File:setup with text.PNG]] Figure 2: Picture of the XY-table set-up == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. [[File:fibremount2.png]] Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre above an ocular == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file [[File:Position Flash front panel.PNG]] Figure 4: Front panel of "position flash.vi" that calibrates and initialises the XY-table. Here the red flash point coincides with the flash at the upper left corner, and it is selected as origin. Notice that the axis of the image is parallel to the MPPC pixel array. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). [[File:Place Coords front panel.PNG]] Figure 5: Front panel of Place coords 50C MPPC.vi. The program recognises the upper left pixel and draws a cross at its center, while the flash point is located to the upper right side of the pixel. The outer red square is the search area. The program will only search for matching pixels inside the search area. == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. [[File:flowchart.png]] Figure 6: Flowchart of the DAQ == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. f945cae4970dac51b190ce3a3d16d1d4b37fe83a 1434 1433 2010-11-29T10:28:18Z Asa022 21 wikitext text/x-wiki XY-table, readout computer name - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED [[File:start_sketch.png]] Figure 1: Sketch of the XY-table === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. [[File:setup with text.PNG]] Figure 2: Picture of the XY-table set-up == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. [[File:fibremount2.png]] Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre above an ocular == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file [[File:Position Flash front panel.PNG]] Figure 4: Front panel of "position flash.vi" that calibrates and initialises the XY-table. Here the red flash point coincides with the flash at the upper left corner, and it is selected as origin. Notice that the axis of the image is parallel to the MPPC pixel array. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). [[File:Place Coords front panel.PNG]] Figure 5: Front panel of Place coords 50C MPPC.vi. The program recognises the upper left pixel and draws a cross at its center, while the flash point is located to the upper right side of the pixel. The outer red square is the search area. The program will only search for matching pixels inside the search area. == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. [[File:flowchart.png]] Figure 6: Flowchart of the DAQ == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. 672b7c638314986cd77079141aa56174d91ab048 1435 1434 2010-11-29T10:28:59Z Asa022 21 wikitext text/x-wiki XY-table, readout computer name - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED [[File:start_sketch.png]] Figure 1: Sketch of the XY-table === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. [[File:setup with text.PNG]] Figure 2: Picture of the XY-table set-up == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. [[File:fibremount2.png]] Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre above an ocular == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file [[File:Position Flash front panel.PNG]] Figure 4: Front panel of "position flash.vi" that calibrates and initialises the XY-table. Here the red flash point coincides with the flash at the upper left corner, and it is selected as origin. Notice that the axis of the image is parallel to the MPPC pixel array. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). [[File:Place Coords front panel.PNG]] Figure 5: Front panel of Place coords 50C MPPC.vi. The program recognises the upper left pixel and draws a cross at its center, while the flash point is located to the upper right side of the pixel. The outer red square is the search area. The program will only search for matching pixels inside the search area. == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program “apekatt” will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. [[File:flowchart.png]] Figure 6: Flowchart of the DAQ == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. 15771153a6f010b0b6725cbc2daa84e1dec841b6 1436 1435 2010-11-29T11:09:53Z Asa022 21 wikitext text/x-wiki XY-table, readout computer name - IFTSUB 041 090 == Introduction == The XY-table is designed to measure the response of single pixels in pixel based detectors. It focuses a narrow and fast LED light through a microscope in order to trigger a single pixel. While microstepper motors are used to position the detector. Since the steps of the motors are uneven, and the detectors have to be kept in the dark when triggered the coordinates of the pixels has to be mapped out and stored. The motor controller can then position the detector correctly when the light is off and the response of the pixels is being measured. Equipment: *Motor controller: SMC compact, uses Venus 1 command language. *Motor stages: X, Y and Z direction *Detector chuck: The table on top of the stages, uses vacuum to fix detectors to its surface. *Microscope: Olympus SZ-11 w/ SZ-CTV adapter for mounting cameras *Camera: Point Grey, flea2 (FL2G-13S2M/C), CCD camera. *Fibremount: Device that mounts a fibre above the left microscope ocular. *Fast LED pulser: Small analogue chip that pulses an attached LED [[File:start_sketch.png]] Figure 1: Sketch of the XY-table === HARDWARE === Figure 1 shows a principal sketch of how the XY-table is controlled and reads out data, while figure 2 shows a photo of the set-up. The set-up depicted in figure 2 is contained within a lightproof aluminium cabinet. The doors a held shut with bolts and has insulating rubber around to keep light out. The inside of the cabinet is also covered with black plastic so that any light entering will be absorbed. The cables going in and out of the cabinet goes through two s-shaped tubes that are filled with black cloth to keep light from entering. [[File:setup with text.PNG]] Figure 2: Picture of the XY-table set-up == Motor stages == The X and Y motor stages consist of a rail with a carriage on top where the carriage can go back and forth along the rail. In the middle of the rail there is screw bolt that moves the carriage when rotated. The screw bolt is driven by a stepper motor. The uneven steps in the motor stages might be corrected by tighten or loosing some screws fixing the carriage to the rail. The Y-stage is positioned at the bottom, while the X-stage is placed on top of the Y-stage carriage, and the Z-stage is placed atop the X-stage carriage. == Detector chuck == The detector chuck is placed on top of the Z-stage. It is a square aluminium table with a 2 x 4 cm2 area of small holes (3x5 holes). The holes are connected and have a common gas input at the back of the detector chuck. When vacuum or low pressure is applied to the gas input a detector covering the holes on top of the detector chuck will get stuck due to under pressure. This is an effective way of holding the detector fixed onto the motor stages while they move. There is a small vacuum pump outside the cabinet supplying vacuum to a set of valves inside the cabinet through a hose. == Motor controller == The motor controller’s purpose is to manage the motor stages. The motor controller is a SMC Compact, created by Micos. The controller has one RS-232 and one GPIB (IEEE-488) port for communication with a computer, though the GPIB seems to have malfunctioned. Neither Lars G. Johansen nor Andreas T. Samnøy has made the GPIB port work in their master thesises in 1999 and 2010 respectively. The controller also has a joystick for moving the motor stages. In order to control the stages via a computer a string of ASCII commands is sent to the controller. Each of the ASCII commands is separated by a space. The motor controller has its own coordinate system of where the stages are positioned, which can be sent to the computer by request. == Microscope with camera == The microscope is has two oculars and one camera slot. At the right backside of the microscope there is a small handle where one can choose whether the right ocular or the camera slot will be open. The left ocular is always open. There is an extra objective/lens attached to the microscope giving it a higher magnification which can easily be removed by unscrewing it. There is a ring of 12V LEDs connected to the objective which is used for illuminating (unsure of max current or power). The LEDs are connected to the blue and red cables coming out of the s-shaped tubes, which normally are connected to a power supply. The camera is a 1288x964 CCD camera with a 1/3 inch CCD chip where each of the pixels are 3.75 x 3.75 μm2. The camera is connected to the microscope by an adapter (Olympus SZ-CTV) that can fix any C-mount camera to the microscope. The camera is connected to the computer through a FireWire 800 (IEEE 1394b) cable. == Fibremount == In order to get a narrow and focused light spot through the microscope a small light source has to be fixed at the correct height above one of the oculars. At the correct height above the ocular the light will be perfectly focused through the microscope and onto any detector lying beneath. Furthermore, the smaller the light source is the more narrow the focused light will be onto the detector underneath the microscope. In order to get a narrow enough light source to shine into one of the oculars a LED is connected to one end of a fibre while the second end shines into a microscope ocular. At the left microscope ocular, which is always open, there is a device called the fibremount that fixes a normal multi-channel fibre with a ST-connector directly above the ocular. The fibremount is shown in figure 3. The ocular is inserted into the wide opening of the House and can be fastened by two screws. The ocular seems to be more stabile if one places a few rounds of electrical tape around the ocular and then simply presses the ocular into the House. The Rod with a connected fibre is placed inside the narrow opening of the House, and fastened by two screws. This way the user can select how far above the ocular the fibre ending should be. The height should be set such that light shining through the microscope should be as focused as possible. [[File:fibremount2.png]] Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre above an ocular == Fast LED pulser == In order to send very short light pulses the LED is connected to a fast LED pulser. The fast LED pulser is a small chip which is connected to a power supply and a signal generator through two lemo wires. The signal generator should be set to send a step signal as the fast LED pulser will then trigger the attached LED on its falling edge. The amount of light emitted depends on the voltage supplied by the power supply, and should be between 12-20V. Any sort of LED should work, preferably a high power led (> 1000 mcd) with a small emitting angle. == Calibrating LED light == In order to calibrate the light from the LED that shines through the microscope the LED should be connected to a DC source. This way the LED light that shines into the fibre can either be seen through the right ocular or on screen through the camera. The user of the system can then elevate or lower the rod inside the fibremount house to get a good focus of the light. The user can also see where the light will hit for position calibration. === SOFTWARE === The software for the XY-table is developed using LabVIEW, and is specifically designed for testing the Hamamatsu MultiPixel Photon Counter (MPPC). The MPPC is a 2 dimensional array of pixels, where each pixel works as a Geiger mode Avalanche PhotoDiode (APD). In other words, each of the pixel will sett of an identical charge signal when struck by a photon. The programs shown here are programs to test all the pixels on a MPPC. A program for the Zecotec MAPD (briefly tested) are also presented at the end. == MPPC programs == There are three MPPC programs, one that calibrates and initialise the XY table. A second program utilizes image recognition to find the motor controller coordinates when the LED light hits the centre of all the pixels and stores them on file. The last program uses the coordinates stored to find all the pixels and trigger them using the fast pulser. Before running the programs or at the very beginning of the first program described below the camera on the microscope should be turned such that the axis of the image given by the camera is parallel to the axis of the MPPC chip. This will make the image recognition process more efficient. == Calibration and initialisation, “Position flash.vi” == When running this program the LED should be powered by a DC power supply and the MPPC chip should be fixed to the detector chuck. It can then clearly be seen where the LED light hit the MPPC surface. The Z-stage which elevates and lowers the detector is used to focus both the image received by the camera and the LED light shining through the microscope. The front panel of the program is shown in figure 4. The user of the program should position the MPPC such that the LED light is focused and hits the centre of the upper left pixel. This position should be selected as origin. The flash point which is a camera pixel coordinate should be selected to coincide with the centre of the LED light when focused. This point tells the software where the LED light hits the MPPC when in focus and is marked with a red pixel on screen. The user then positions the LED light at the centre of the upper right pixel and focuses it such that the flash point and the LED light coincides again without changing the flash point coordinates; by just regulating the z-stage. The user then presses the button to calculate the x-base. Similarly the y-base is found by targeting the lower left pixel. The program now has two vectors running along the axis of the MPPC. These two vectors span out a two dimensional coordinate system whose axis is orthogonal with the axis of the MPPC chip. When the program is stopped the x- and y- bases along with the flash point are written to file [[File:Position Flash front panel.PNG]] Figure 4: Front panel of "position flash.vi" that calibrates and initialises the XY-table. Here the red flash point coincides with the flash at the upper left corner, and it is selected as origin. Notice that the axis of the image is parallel to the MPPC pixel array. == Mapping coordinates, “Place coords.vi” == There are two of these programs, one for the 025c MPPC and one for the 050c. When the program starts it imports the x- and y- bases, and the flash point that represent where the LED light will hit. An image of the Place cords.vi (050c version) is shown in figure 5. While the program runs the LED light should be turned off since it will disturb the image recognition sequence. The flash point points at the upper left pixel when the program start since this is selected as origin. In order to make the program recognise a pixel the user has to draw a frame around a single pixel in the image given by the camera and select the “Lear Pattern” button. To make a frame the square icon directly to the left of the image given by the camera has to be pressed. In order to be sure that the program recognises the pixel closest to the flash point a second frame should be drawn. The frame should be almost the size of two pixels, but should not be able to contain two pixels at once. The second frame is to be centred at the flash point. The user then presses the “Set Search area”. When both the frames have been drawn as depicted in figure 5 the “start coord finder” can be pressed. The program will then move the MPPC such that the centre of the recognised pixel moves towards the flashpoint. The movement is done by a simple proportional controller algorithm. The number of times it will be moved is given in the “Control loops” and is normally 5. The distance it moves per step is proportional to the “Prop Const” which is a negative number (if the number is positive it will move away from flash point). After all the control loops have been executed the flash point and the centre of the pixel should be on top of each other. The program then writes the motor controllers coordinate to file and moves over to the neighbouring pixel where the sequence repeats itself. This way the program finds all the pixel’s coordinates and writes them to file. In the case of the 25C MPPC the pixels of different rows have different shapes. All the odd number rows have one shape which is different from the even number rows. The program then demands that the user frames a pixel from an odd row (switch in P1 position) and presses learn pattern, then does the same for an even row pixel (P2). [[File:Place Coords front panel.PNG]] Figure 5: Front panel of Place coords 50C MPPC.vi. The program recognises the upper left pixel and draws a cross at its center, while the flash point is located to the upper right side of the pixel. The outer red square is the search area. The program will only search for matching pixels inside the search area. == Check coordinates == After the coordinates for all the pixels have been written to file the coordinates should be checked. The LED should now be powered by a power supply and the program "check coords.vi" will move the XY-table to all the stored coordinates. This way the user can see if the LED light hits the pixels correctly or if a new set of coordinates should be found. If there is an error where the light always hits one side of the pixel this can be corrected for in the measurement program. == Measure pixels == This is the program which measures the response of each pixel. The LED should now be connected to the fast pulser. The fast pulser will continuously pulse the LED at a rate set by the signal generator and is not controlled by the computer. The program reads out the response from the MPPC whenever the LED is pulsed and the ADC is ready. The Data Acquisition (DAQ) will be further elaborated below. The number of measurements done on each pixel is set by the user, the default is 10,000 measurements. The user also has to select what kind of MPPC is being measured, 25c or 50c. The program writes a .txt file for each pixel containing all the measurements from it. The files have a header and two columns, the left column is the voltage amplitude of the signal and the left column is the charge given by MPPC. The charge is measured in ADC channel numbers which is proportional to the actual charge in coulomb. == Data Acquisition System (DAQ) == The DAQ described here is created for measuring the MPPC and the MAPD detector. It gives good results for the MPPC, but the signal from the MAPD drowns in noise from the XY-table and the unshielded fast pulser. Little time has been used to make the MAPD work with the XY-table so far. The signal generator is set at approximately 2000 kHz step function with a 5 ns rise and fall time. The signal is sent into a fan out which splits the signal and sends two identical signals to both the external trigger on the ADC and the fast pulser. The fast pulser emits light on the falling edge of the step function delivered by the signal generator. The amount of light depends on the voltage supplied to it as explained in the hardware section. The MPPC is connected to a read out circuit inside a box (read out box) which is fixed to the detector chuck. The MPPC receives its bias voltage from a high voltage power supply through the read out circuit. The charge emitted from the MPPC goes through a resistance in the circuit which produces a voltage signal. The voltage signal goes into a preamplifier (100 gain) before it is sent to the ADC. The ADC digitizes any incoming signal whenever it receives a signal at the external trigger and is not busy. [[File:flowchart.png]] Figure 6: Flowchart of the DAQ == MAPD == One program for the MAPD has been built, but since there signal to noise ratio is so low it has never been used. If the noise is somehow reduced the program should be usable. Since the MAPD has a smooth surface image recognition cannot be implemented. Furthermore the pixel density of the MAPD is so high that with the current system the LED pulse will probably strike several pixels. This does not mean that the XY-table with reduced noise is useless in characterising the MAPDs. If the XY-table noise is reduced one could still find out whether or not some areas of the MAPD yields more or less gain then the rest. The program uses the same LED system for triggering and the same DAQ as described above for the MPPC. The program is split into two parts; the first is similar to the initialisation and calibration program for the MPPC, while the second does the data acquisition. In the first part the user selects a squared area where the measurements are to take place. The LED light should now be powered by the power supply in order to see where it hits the MAPD surface. To select this squared measurement area the user moves the MAPD such that the LED light hits one of the corners of the wanted area, and focuses it with the z-stage. This position is selected as origin. The MAPD is then to be positioned and focused at one of the neighbouring corners and be selected as either X- or Y-base. Before selecting it as a base the number of steps in this direction should be entered in “Steps”. The same way the other neighbouring corner of the origin corner is selected as the other base. The two bases now works as two vectors that spans out a square. This way a user can select a square where the program measures the MAPD 3 times along one direction and 10 times along the other by selecting 3 and 10 steps in their respective bases. When both of the bases have been set the light has to be shut off and the LED connected to the fast pulser. The button “start scan” will then commence the measurement of the MAPD. 30acffb4c4a9586c30557dd69213839d1ef6af11 File:Fibremount2.pdf 6 319 1421 2010-11-29T09:42:39Z Asa022 21 Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre with a ST-connector above an ocular wikitext text/x-wiki Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre with a ST-connector above an ocular 83e21a216e0cfde7e83be6efd60e0634b61109e9 File:Flowchart.pdf 6 320 1422 2010-11-29T09:43:40Z Asa022 21 Figure 6: Flowchart of the DAQ wikitext text/x-wiki Figure 6: Flowchart of the DAQ 547c0c778db1542ebac45f181af9e333ff7c4817 File:Place Coords front panel.PNG 6 321 1423 2010-11-29T09:44:45Z Asa022 21 Figure 5: Front panel of Place coords 50C MPPC.vi. The program recognises the upper left pixel and draws a cross at its center, while the flash point is located to the upper right side of the pixel. The outer red square is the search area. The program will only search for matching pixels inside the search area. wikitext text/x-wiki Figure 5: Front panel of Place coords 50C MPPC.vi. The program recognises the upper left pixel and draws a cross at its center, while the flash point is located to the upper right side of the pixel. The outer red square is the search area. The program will only search for matching pixels inside the search area. 1f1e1f55661601b056dbe0d3279659c07eb8e9d2 File:Position Flash front panel.PNG 6 322 1424 2010-11-29T09:45:29Z Asa022 21 Figure 4: Front panel of "position flash.vi" that calibrates and initialises the XY-table. Here the red flash point coincides with the flash at the upper left corner, and it is selected as origin. Notice that the axis of the image is parallel to the MPPC pixel array. wikitext text/x-wiki Figure 4: Front panel of "position flash.vi" that calibrates and initialises the XY-table. Here the red flash point coincides with the flash at the upper left corner, and it is selected as origin. Notice that the axis of the image is parallel to the MPPC pixel array. bb322fa9977d6758ba8a36ed2306998bca1b7e07 File:Setup with text.PNG 6 323 1425 2010-11-29T09:47:28Z Asa022 21 Figure 2: Picture of the XY-table set-up wikitext text/x-wiki Figure 2: Picture of the XY-table set-up e8be9808d7e5a6a0ca93b983268237db87d3563a File:Start sketch.pdf 6 324 1426 2010-11-29T09:48:13Z Asa022 21 Figure 1: Sketch of the XY-table wikitext text/x-wiki Figure 1: Sketch of the XY-table 0760af9b9df4e2104ab3daa2f0b227c5f590c211 File:Start sketch.png 6 325 1429 2010-11-29T10:20:29Z Asa022 21 Figure 1: Sketch of the XY-table wikitext text/x-wiki Figure 1: Sketch of the XY-table 0760af9b9df4e2104ab3daa2f0b227c5f590c211 File:Fibremount2.png 6 326 1430 2010-11-29T10:20:55Z Asa022 21 Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre above an ocular wikitext text/x-wiki Figure 3: Sketch and picture of the fibremount that holds a multi-channel fibre above an ocular 2d8d9036a78a753f1842bb2ac3acb04b104474c7 File:Flowchart.png 6 327 1431 2010-11-29T10:22:05Z Asa022 21 Figure 6: Flowchart of the DAQ wikitext text/x-wiki Figure 6: Flowchart of the DAQ 547c0c778db1542ebac45f181af9e333ff7c4817 Coming to CERN 0 203 1437 1294 2010-12-03T15:54:15Z Dfe002 7 /* Documents to bring */ added health insurance note wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". There is a CERN shuttle bus to/from the airport ([https://espace.cern.ch/info-RegularShuttleService/default.aspx timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. [[User:Dfe002|Dominik]] 15:56, 22 March 2010 (UTC) 7c4b918468d33f8913264ea9457d0b871698fad2 1438 1437 2010-12-03T16:00:13Z Dfe002 7 ãdded printer section wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. The current situation is: Bus 56 now runs CERN-Meyrin Village. Change to tram 14/16 at the stop "Vaudagne" (the tram continues one stop to "Graviere"). To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. A new line 57 also runs through the ZIMEYSA area, and connects to bus 56 at the stop "P+R Planche" (just downhill from CERN). The bus 28 no longer runs to Meyrin, but continues to the Vernier area. You may take this bus (or bus 23, following the same path), and change to tram 14 or 16 at the stop "Blandonnet", then change to bus 56 at "Vaudagne". You may of course till take bus 10, change to tram 14 or 16 at "Bouchet", then change to bus 56 at "Vaudagne". There is a CERN shuttle bus to/from the airport ([https://espace.cern.ch/info-RegularShuttleService/default.aspx timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 80680186f7af2063121b3755a4785ba3c12ff6d5 Analysis 0 328 1440 2011-01-03T11:04:54Z Bwa021 51 initial analysis page setup wikitext text/x-wiki = Local Analysis Help = The goal of this page is to collect experiences with data analysis in general with a focus on the Grid and AAF. It should lead to a template that can be used by the whole Bergen group. It should make it easier to start and with a common starting point, help should be easier to find. It also can be a place to find out who is doing what. As a suggestion of pages to come * [[People]] - short description who is doing what. Maybe link to code with explanations * [[Physics Working Groups]] - important people - meeting summaries - explaining used methods * [[Template]] - code template with documentation * [[Examples]] collection of user analysises, with histogram pictures, talks where they were used * [[Further reading]] * [[AliEn news]] - summary of the offline weeks * [[AliRoot installation]] * [[Acronyms index]] e54541004f4e39ab808d426309d7fb6afb206933 1441 1440 2011-01-03T11:05:15Z Bwa021 51 wikitext text/x-wiki The goal of this page is to collect experiences with data analysis in general with a focus on the Grid and AAF. It should lead to a template that can be used by the whole Bergen group. It should make it easier to start and with a common starting point, help should be easier to find. It also can be a place to find out who is doing what. As a suggestion of pages to come * [[People]] - short description who is doing what. Maybe link to code with explanations * [[Physics Working Groups]] - important people - meeting summaries - explaining used methods * [[Template]] - code template with documentation * [[Examples]] collection of user analysises, with histogram pictures, talks where they were used * [[Further reading]] * [[AliEn news]] - summary of the offline weeks * [[AliRoot installation]] * [[Acronyms index]] 73d847105d3352a484ece4983717c1f31627a1b0 Phys117 - PET project 0 309 1443 1349 2011-01-05T09:51:59Z Dfe002 7 added new files wikitext text/x-wiki == Goal == The aim of this phys117 course is to build a small array with 9 crystals coupled to silicon photo multipliers. For this we need to design the circuit to read out the MPPCs and include a pre amplifier there. We also need to have a light tight containment that holds the crystals and couples them to the MPPCs. To measure the physical crosstalk the crystals have to be individually wrapped. The readout of the whole system is then done in Labview through two 14 bit 2 Ghz oversampling CAEN ADCs. The hardware has been built in autumn 2010, and the next task is to perform a the measurements: energy resolution, linearity and event topology. == Resources == [http://web.ift.uib.no/~dominik/files/phys117/PHYS117%20-%20PET%20scanner.pdf Project report of phys117 fall 2010]<br> [http://web.ift.uib.no/~dominik/files/phys117/MPPC%20Amplifier%209%20routed2.brd Eagle board layout of 3x3 matrix]<br> [http://web.ift.uib.no/~dominik/files/phys117/MPPC%20Amplifier%209%20routed2.sch Eagle schematics file of 3x3 layout]<br> [http://web.ift.uib.no/~dominik/files/phys117/MPPC%20Amplifier.zip Eagle schematics and layout]<br> [http://web.ift.uib.no/~dominik/files/phys117/Multisim.zip Multisim simulation model]<br> [http://www.farnell.com/datasheets/92509.pdf AD8000YDZ preamp datasheet]<br> 1124ed3abd94c4105482f30a8be574d3387232f8 The ASIM project 0 222 1444 1275 2011-01-10T13:48:31Z Gge002 52 added tips&tricks wikitext text/x-wiki == ASIM - Atmosphere Space Interaction Monitor == ASIM is an experiment for the International Space Station (ISS) external facilities on the Columbus module. ASIM is aimed at the study of high-altitude optical emissions from the stratosphere and mesosphere, the Transient Luminous Events (TLEs: Red Sprites, Blue Jets, Elves) and the Terrestrial Gamma Flashes (TGFs) (Neubert et al., 2006). ASIM has been through a Phase-A (Development and Design, 2004-2005) and a Phase-B (Breadboard and Feasibility, 2007-2009) study. In May 2009 the Program Board for Human Spaceflight and Exploration (PB-HME) decided that the ASIM payload shall be part of the ELIPS-3 program and allocated funding to ASIM from the program. A flight model of the ASIM payload will be built through Phase C/D starting early 2010. ---- [[ASIM-BGO]] [[ASIM-CZT]] [[Tips 'n' Tricks]] [[Category:Space physics]] 8b19f077c25eaee5b36d9dc2d965205695a0a26d 1446 1444 2011-01-10T14:09:00Z Gge002 52 wikitext text/x-wiki == ASIM - Atmosphere Space Interaction Monitor == ASIM is an experiment for the International Space Station (ISS) external facilities on the Columbus module. ASIM is aimed at the study of high-altitude optical emissions from the stratosphere and mesosphere, the Transient Luminous Events (TLEs: Red Sprites, Blue Jets, Elves) and the Terrestrial Gamma Flashes (TGFs) (Neubert et al., 2006). ASIM has been through a Phase-A (Development and Design, 2004-2005) and a Phase-B (Breadboard and Feasibility, 2007-2009) study. In May 2009 the Program Board for Human Spaceflight and Exploration (PB-HME) decided that the ASIM payload shall be part of the ELIPS-3 program and allocated funding to ASIM from the program. A flight model of the ASIM payload will be built through Phase C/D starting early 2010. ---- [[ASIM-BGO]] [[ASIM-CZT]] [[Tips 'n' Tricks (Programming)]] [[Category:Space physics]] ab0a61a4548f6feae44bd4cbfa6c4f4e11995ef6 1447 1446 2011-01-10T14:09:24Z Gge002 52 Undo revision 1446 by [[Special:Contributions/Gge002|Gge002]] ([[User talk:Gge002|Talk]]) wikitext text/x-wiki == ASIM - Atmosphere Space Interaction Monitor == ASIM is an experiment for the International Space Station (ISS) external facilities on the Columbus module. ASIM is aimed at the study of high-altitude optical emissions from the stratosphere and mesosphere, the Transient Luminous Events (TLEs: Red Sprites, Blue Jets, Elves) and the Terrestrial Gamma Flashes (TGFs) (Neubert et al., 2006). ASIM has been through a Phase-A (Development and Design, 2004-2005) and a Phase-B (Breadboard and Feasibility, 2007-2009) study. In May 2009 the Program Board for Human Spaceflight and Exploration (PB-HME) decided that the ASIM payload shall be part of the ELIPS-3 program and allocated funding to ASIM from the program. A flight model of the ASIM payload will be built through Phase C/D starting early 2010. ---- [[ASIM-BGO]] [[ASIM-CZT]] [[Tips 'n' Tricks]] [[Category:Space physics]] 8b19f077c25eaee5b36d9dc2d965205695a0a26d Tips 'n' Tricks 0 329 1445 2011-01-10T14:07:33Z Gge002 52 Created the page wikitext text/x-wiki ==Programming T&T== #C/C++ #*[[ANSI C]] T&T #*[[ISO/IEC C++]] (Unmanaged C++) T&T #*[[C++/CLI]] (Managed C++) T&T #Matlab T&T #LabVIEW T&T [[Category:Programming]] [[Category:Tips and Tricks]] fe6ee485555353ac537d5c40b3076fa0d35b6228 1448 1445 2011-01-10T14:13:05Z Gge002 52 MEX wikitext text/x-wiki ==Programming T&T== #C/C++ #*[[ANSI C]] T&T #*[[ISO/IEC C++]] (Unmanaged C++) T&T #*[[C++/CLI]] (Managed C++) T&T #Matlab T&T #*[[Using MEX-Files to Call C/C++ and Fortran Programs]] #LabVIEW T&T [[Category:Programming]] [[Category:Tips and Tricks]] 30bbdaf3ee7cf92c20cf82d808b6bba8ca9a9f0e Using MEX-Files to Call C/C++ and Fortran Programs 0 330 1449 2011-01-10T15:14:36Z Gge002 52 Created the page, waiting for an add-on that can display source code wikitext text/x-wiki ==Understanding MEX== MEX-files (MATLAB executables) are used to call large pre-existing C/C++ and Fortran programs from MATLAB without translating them into MATLAB. Another advantage is that C/C++ code is generally faster than MATLAB. The best source of information is MathWorks' knowledge database. To understand C/C++ Source MEX-Files see: :*[http://www.mathworks.com/help/techdoc/matlab_external/f43721.html|C/C++ Source MEX-Files] (last checked 10 Jan 2011) To understand how to use MEX-Files to Call C/C++ and Fortran Programs see :*[http://www.mathworks.com/help/techdoc/matlab_external/f29502.html|Using MEX-Files to Call C/C++ and Fortran Programs] ==Tips 'n' Tricks== #'''Where to place the gateway routine within the C/C++ program''' - it looks like the gateway routine should be the last routine in the code. This sheds the problem with undefined variables and alike. I (GG) haven't found any place in the knowledge base where this is mentioned. Maybe it is not true in all cases either. Here follows an example that is a modification of the original MATLAB code from the knowledge database (see link "MEX-Files to Call C/C++ and Fortran Programs" above). In the case below three input parameters are required, while in the original code only two are necessary. A comparison between the two version helps to find the in-s and out-s. [[Category:Programming]] [[Category:Tips and Tricks]] [[Category:MATLAB]] b7a32e3a11ddd88ef0243421f740c144ee31007c 1450 1449 2011-01-14T08:52:56Z Gge002 52 added the code wikitext text/x-wiki ==Understanding MEX== MEX-files (MATLAB executables) are used to call large pre-existing C/C++ and Fortran programs from MATLAB without translating them into MATLAB. Another advantage is that C/C++ code is generally faster than MATLAB. The best source of information is MathWorks' knowledge database. To understand C/C++ Source MEX-Files see: :*[http://www.mathworks.com/help/techdoc/matlab_external/f43721.html|C/C++ Source MEX-Files] (last checked 10 Jan 2011) To understand how to use MEX-Files to Call C/C++ and Fortran Programs see :*[http://www.mathworks.com/help/techdoc/matlab_external/f29502.html|Using MEX-Files to Call C/C++ and Fortran Programs] ==Tips 'n' Tricks== #'''Where to place the gateway routine within the C/C++ program''' - it looks like the gateway routine should be the last routine in the code. This sheds the problem with undefined variables and alike. I (GG) haven't found any place in the knowledge base where this is mentioned. Maybe it is not true in all cases either. Here follows an example that is a modification of the original MATLAB code from the knowledge database (see link "MEX-Files to Call C/C++ and Fortran Programs" above). In the case below three input parameters are required, while in the original code only two are necessary. A comparison between the two version helps to find the in-s and out-s. <source lang="cpp"> #include "mex.h" #include "matrix.h" /* * arrayProduct.c * Multiplies an input scalar times a 1xN matrix * and outputs a 1xN matrix * * This is a modified version of the MEX-file from MathWorks' knowledge database. * http://www.mathworks.com/help/techdoc/matlab_external/f29502.html * * The modifications are (LINE REFERENCES DIFFERENT FROM ORIGINAL): * the original "double multiplier" is replaced with "double multiplier1" (line 61) * introduced "double multiplier2" (line 62) * line 37 - added "double w" * line 42 - added " * w " * line 73 - changed message to be displayed * line 98, 99 - added those lines * line 113 - added "multiplier2" and changed "multiplier" with "multiplier1" */ /**************************************************/ /**************************************************/ /************* SOME ROUTINE *************/ /**************************************************/ /**************************************************/ /* Multiplies an input scalar times a 1xN matrix */ /* and output is a 1xN matrix */ /**************************************************/ /**************************************************/ void arrayProduct(double x, double *y, double *z, double w, mwSize n) { mwSize i; for (i=0; i<n; i++) { z[i] = x * y[i] * w; } } /**********************************************************/ /**********************************************************/ /************* THE GATEWAY FUNCTION *************/ /**********************************************************/ /**********************************************************/ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /*** Variable declarations ***/ double multiplier1; // input scalar double multiplier2; // input scalar double *inMatrix; // 1xN input matrix mwSize ncols; // size of matrix double *outMatrix; // output matrix /*** CODE ***/ // check for proper number of arguments if(nrhs!=3) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nrhs", "Three inputs required."); } if(nlhs!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs", "One output required."); } // make sure the first input argument is scalar if( !mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || mxGetNumberOfElements(prhs[0])!=1 ) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notScalar", "Input multiplier must be a scalar."); } // check that number of rows in second input argument is 1 if(mxGetM(prhs[1])!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notRowVector", "Input must be a row vector."); } // get the value of the first scalar input multiplier1 = mxGetScalar(prhs[0]); // get the value of the second scalar input multiplier2 = mxGetScalar(prhs[2]); // create a pointer to the real data in the input matrix inMatrix = mxGetPr(prhs[1]); // get dimensions of the input matrix ncols = mxGetN(prhs[1]); // create the output matrix */ plhs[0] = mxCreateDoubleMatrix(1,ncols,mxREAL); // get a pointer to the real data in the output matrix outMatrix = mxGetPr(plhs[0]); // call the computational routine arrayProduct(multiplier1,inMatrix,outMatrix,multiplier2,ncols); } </source> [[Category:Programming]] [[Category:Tips and Tricks]] [[Category:MATLAB]] 33a2b88f6006c2ad6df8afb2a9a67a64c7497847 1451 1450 2011-01-14T15:18:28Z Gge002 52 fixed broken links, some new text & formating wikitext text/x-wiki ==Understanding MEX== MEX-files (MATLAB executables) are used to call large pre-existing C/C++ and Fortran programs from MATLAB without translating them into MATLAB. Another advantage is that C/C++ code is generally faster than MATLAB. The best source of information is MathWorks' knowledge database. To understand C/C++ Source MEX-Files see: :*[http://www.mathworks.com/help/techdoc/matlab_external/f43721.html C/C++ Source MEX-Files] (last checked 10 Jan 2011) To understand how to use MEX-Files to Call C/C++ and Fortran Programs see :*[http://www.mathworks.com/help/techdoc/matlab_external/f29502.html Using MEX-Files to Call C/C++ and Fortran Programs] (last checked 10 Jan 2011) ==Tips 'n' Tricks== #'''Where to place the gateway routine within the C/C++ program''' #*''The whole code can be placed in the Gateway routine'' #*''At the end'' - it looks like the gateway routine should be the last routine in the code if more routines are present. This sheds the problem with undefined variables and alike. I (GG) haven't found any place in the knowledge base where this is mentioned. Maybe it is not true in all cases either. Here follows an example that is a modification of the original MATLAB code from the knowledge database (see link "MEX-Files to Call C/C++ and Fortran Programs" above). In the case below three input parameters are required, while in the original code only two are necessary. A comparison between the two version helps to find the in-s and out-s. <source lang="cpp"> #include "mex.h" #include "matrix.h" /* * arrayProduct.c * Multiplies an input scalar times a 1xN matrix * and outputs a 1xN matrix * * This is a modified version of the MEX-file from MathWorks' knowledge database. * http://www.mathworks.com/help/techdoc/matlab_external/f29502.html * * The modifications are (LINE REFERENCES DIFFERENT FROM ORIGINAL): * the original "double multiplier" is replaced with "double multiplier1" (line 61) * introduced "double multiplier2" (line 62) * line 37 - added "double w" * line 42 - added " * w " * line 73 - changed message to be displayed * line 98, 99 - added those lines * line 113 - added "multiplier2" and changed "multiplier" with "multiplier1" */ /**************************************************/ /**************************************************/ /************* SOME ROUTINE *************/ /**************************************************/ /**************************************************/ /* Multiplies an input scalar times a 1xN matrix */ /* and output is a 1xN matrix */ /**************************************************/ /**************************************************/ void arrayProduct(double x, double *y, double *z, double w, mwSize n) { mwSize i; for (i=0; i<n; i++) { z[i] = x * y[i] * w; } } /**********************************************************/ /**********************************************************/ /************* THE GATEWAY FUNCTION *************/ /**********************************************************/ /**********************************************************/ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /*** Variable declarations ***/ double multiplier1; // input scalar double multiplier2; // input scalar double *inMatrix; // 1xN input matrix mwSize ncols; // size of matrix double *outMatrix; // output matrix /*** CODE ***/ // check for proper number of arguments if(nrhs!=3) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nrhs", "Three inputs required."); } if(nlhs!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs", "One output required."); } // make sure the first input argument is scalar if( !mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || mxGetNumberOfElements(prhs[0])!=1 ) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notScalar", "Input multiplier must be a scalar."); } // check that number of rows in second input argument is 1 if(mxGetM(prhs[1])!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notRowVector", "Input must be a row vector."); } // get the value of the first scalar input multiplier1 = mxGetScalar(prhs[0]); // get the value of the second scalar input multiplier2 = mxGetScalar(prhs[2]); // create a pointer to the real data in the input matrix inMatrix = mxGetPr(prhs[1]); // get dimensions of the input matrix ncols = mxGetN(prhs[1]); // create the output matrix */ plhs[0] = mxCreateDoubleMatrix(1,ncols,mxREAL); // get a pointer to the real data in the output matrix outMatrix = mxGetPr(plhs[0]); // call the computational routine arrayProduct(multiplier1,inMatrix,outMatrix,multiplier2,ncols); } </source> [[Category:Programming]] [[Category:Tips and Tricks]] [[Category:MATLAB]] a1ecf2eda14b1b67d7e193d035cb3ee7461a80c2 Detector lab 0 21 1452 1395 2011-01-17T10:13:38Z Dfe002 7 updated student list wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Oliver * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 30.10. - 08.10.10: IEEE 2010 Nuclear Science Symposium and Medical Imaging Conference(http://www.nss-mic.org/2010/) == For internal use == [[material]] that can be used in official presentations. 9ea88302dba4449b7c0ffc83233a717a162a471e 3D Detector Activities 0 23 1453 353 2011-01-17T13:30:48Z Dfe002 7 wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, ... == Documentation == [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3D report 06-03-09.pdf 3D Report Cedric Virmontois] ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] 39e9eb7642e4e334c45f343e811c4c40584d19a6 1454 1453 2011-01-17T13:31:46Z Dfe002 7 /* Documentation */ wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, ... == Documentation == [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3D%20report%20 06-03-09.pdf 3D Report Cedric Virmontois] ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] 746497c3e4389782ba3909714266d9d14fe2d1dc 1455 1454 2011-01-17T13:32:10Z Dfe002 7 /* Documentation */ wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, ... == Documentation == [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3D%20report%2006-03-09.pdf 3D Report Cedric Virmontois] ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] 5741ced52fffebe69e93826200bb5e5f57aa2a48 1456 1455 2011-01-17T13:33:22Z Dfe002 7 /* Documentation */ wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, ... == Documentation == [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3d/3D%20report%2006-03-09.pdf 3D Report Cedric Virmontois] ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] 1597b018f0670d7b92a62003c997682c68b199ee Main Page 0 1 1457 751 2011-01-18T10:13:42Z Hsa061 18 wikitext text/x-wiki <big>'''Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] * [[DAMARA]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] deeacdb2690c3ffb09f7de2dcee55ad1589c6950 DAMARA 0 331 1458 2011-01-18T10:14:44Z Hsa061 18 Created page with ' * [[How to get to Bergen]]' wikitext text/x-wiki * [[How to get to Bergen]] 8a08052ce7843cf3046e50fd54557c15088e3e86 1459 1458 2011-01-18T10:15:23Z Hsa061 18 wikitext text/x-wiki * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN as a new student]] 31d269693d774afb1c89e99e36eb275eb9f114ae What to do when you come to Bergen as a new student 0 332 1460 2011-01-18T10:21:53Z Hsa061 18 Created page with 'First make sure that you have accomodation, bank account and visa if needed. Then arriving at the IFT these are the things to do: - Contact your supervisor or other contact pe…' wikitext text/x-wiki First make sure that you have accomodation, bank account and visa if needed. Then arriving at the IFT these are the things to do: - Contact your supervisor or other contact person, he/she will introduce you to the relevant people at the IFT - Talk to Elin Bjerkan to get done the administrative part - Get access card to the IFT building - Get an office and keys from Gjert Furhovden - Get internet connection and accounts from Magne Håvåg - Get access to the Twiki - Make sure you have a computer and set this up accordingly (if you are a Master student or visitor student you will use one of the PCs in the room allocated) - If you are taking courses talk to Terje Finnekås - If you work in the detector laboratory read through the safety rules and detector lab manual and talk to Dominik Fehlker about using the laboratory 22cc4a5d80965214cc0119cc4069f77715e59d61 What to do when you come to Bergen as a new student 0 332 1461 1460 2011-01-18T10:22:32Z Hsa061 18 wikitext text/x-wiki First make sure that you have accomodation, bank account and visa if needed. Then arriving at the IFT these are the things to do: - Contact your supervisor or other contact person, he/she will introduce you to the relevant people at the IFT - Talk to Elin Bjerkan to get done the administrative part - Get access card to the IFT building - Get an office and keys from Gjert Furhovden - Get internet connection and accounts from Magne Håvåg - Get access to the Twiki - Make sure you have a computer and set this up accordingly (if you are a Master student or visitor student you will use one of the PCs in the room allocated) - If you are taking courses talk to Terje Finnekås - If you work in the detector laboratory read through the safety rules and detector lab manual and talk to Dominik Fehlker about using the laboratory 12b267a2aa5452982d1e4b236e98fb18b1ac0e3a 1462 1461 2011-01-18T10:24:10Z Hsa061 18 wikitext text/x-wiki First make sure that you have accomodation, bank account and visa if needed. Then arriving at the IFT these are the things to do: * Contact your supervisor or other contact person, he/she will introduce you to the relevant people at the IFT * Talk to Elin Bjerkan to get done the administrative part * Get access card to the IFT building * Get an office and keys from Gjert Furhovden * Get internet connection and accounts from Magne Håvåg * Get access to the Twiki * Make sure you have a computer and set this up accordingly (if you are a Master student or visitor student you will use one of the PCs in the room allocated) * If you are taking courses talk to Terje Finnekås * If you work in the detector laboratory read through the safety rules and detector lab manual and talk to Dominik Fehlker about using the laboratory 51561897f2ef2673711e950fd3ba359fd4cd8e02 1463 1462 2011-01-18T10:28:36Z Hsa061 18 wikitext text/x-wiki First make sure that you have accomodation, bank account and visa if needed. Then arriving at the IFT these are the things to do: * Contact your supervisor or other contact person, he/she will introduce you to the relevant people at the IFT * Talk to Elin Bjerkan to get done the administrative part * Get access card to the IFT building * Get an office and keys from Gjert Furhovden * Get internet connection and accounts from Magne Håvåg * Get access to the Twiki from Dominik Fehlker or Thomas Burgess * Make sure you have a computer and set this up accordingly (if you are a Master student or visitor student you will use one of the PCs in the room allocated) * If you are taking courses talk to Terje Finnekås * If you work in the detector laboratory read through the safety rules and detector lab manual and talk to Dominik Fehlker about using the laboratory b55402602d745b0a1ef91682888147a63b54fbba 1486 1463 2011-01-20T11:01:10Z Jli051 54 wikitext text/x-wiki First make sure that you have accomodation, bank account and visa if needed. Then arriving at the IFT these are the things to do: * Contact your supervisor or other contact person, he/she will introduce you to the relevant people at the IFT * Talk to Elin Bjerkan to get done the administrative part * Get access card to the IFT building. Go to the expedition office at the third floor where you have to fill out some forms which are then delivered at the card center just down the block from the ITF building. * Get an office and keys from Gjert Furhovden * Get internet connection and accounts by first talking to Magne Håvåg and then applying for an account at https://sebra.uib.no which then has to be approved. * Get access to the Twiki from Dominik Fehlker or Thomas Burgess. First you need to have the UiB account and then you need to log in to the twiki using your UiB username and password. This ads you to the userlist and allows the admins to enable your account. * Make sure you have a computer and set this up accordingly (if you are a Master student or visitor student you will use one of the PCs in the room allocated) * If you are taking courses talk to Terje Finnekås * If you work in the detector laboratory read through the safety rules and detector lab manual and talk to Dominik Fehlker about using the laboratory bc2536d2a4bed2b094be0b70f70f0a30366b393f 1489 1486 2011-01-24T10:27:26Z Hsa061 18 wikitext text/x-wiki First make sure that you have accomodation, bank account and visa if needed. Then arriving at the IFT these are the things to do: * Contact your supervisor or other contact person, he/she will introduce you to the relevant people at the IFT * Talk to Elin Bjerkan to get done the administrative part * Get access card to the IFT building. Go to the expedition office at the third floor where you have to fill out some forms which are then delivered at the card center just down the block from the ITF building. * Get an office and keys from Gjert Furhovden * Get internet connection and accounts by first talking to Magne Håvåg and then applying for an account at https://sebra.uib.no which then has to be approved. * Get access to the Twiki from Dominik Fehlker or Thomas Burgess. First you need to have the UiB account and then you need to log in to the twiki using your UiB username and password. This ads you to the userlist and allows the admins to enable your account. * Make sure you have a computer and set this up accordingly (if you are a Master student or visitor student you will use one of the PCs in the room allocated) * If you are taking courses talk to Terje Finnekås * If you work in the detector laboratory read through the safety rules and detector lab manual and talk to Dominik Fehlker about using the laboratory * Make sure you are on the relevant mailing lists and hypernews: ift-atlas, detectorlab, ... a6da7409c711963e8f2d3027fb696fc945781f11 DAMARA 0 331 1464 1459 2011-01-18T10:31:49Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN as a new student]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html == Computing == f9e83e3558b525a6445b293963049b8fb3ca0a6e 1465 1464 2011-01-18T10:33:26Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html == Computing == f5da904559032600b5a611c382352e7842c9f796 1467 1465 2011-01-18T10:57:08Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html == Computing == When you have an ATLAS account you can work yourway through this one: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook 1cb16a480389f7f2a02209fb4c32c6681bc6ca19 1468 1467 2011-01-18T10:58:33Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html == Computing == When you have an ATLAS account you can work yourway through this link: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook e995ec3da920d7d4f3e785ab7564d4246785b895 1469 1468 2011-01-18T10:59:39Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html == Computing == When you have an ATLAS account you can work yourway through this link: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials 1d68f346d49af87906e844a2e2fa2824a39ea3cf 1470 1469 2011-01-18T11:01:07Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics == Computing == When you have an ATLAS account you can work yourway through this link: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials c7d2b7f9d6f8d0686253a608ef6e12a3449d86fb 1471 1470 2011-01-18T11:01:58Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics == Computing == When you have an ATLAS account you can work yourway through this link: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials adc38267e94533a4a9c4a99556dd82fd34f8617a 1475 1471 2011-01-18T11:08:06Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics == Computing == When you have an ATLAS account you can work your way through this link: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials dd931811a0a8643f54f68808c91f212f4865f0a4 1476 1475 2011-01-18T11:23:16Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials b51634449346f54785d530ada6d9c9a0fd2133f0 1490 1476 2011-02-07T08:01:53Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials 2a3d9f2f982b7f4701d14f7356cc8a35209f1236 1492 1490 2011-02-07T08:06:44Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Other stuff: * [[Useful Linux commands]] 719eebfc457259dc4c3e6f6e35a65cede3d51213 What to do when you come to CERN for the first time 0 333 1466 2011-01-18T10:43:28Z Hsa061 18 Created page with ' FIrst follow these instructions, from Bergen you can already do point 3 on this list: * http://atlassec.web.cern.ch/atlassec/Registration.htm' wikitext text/x-wiki FIrst follow these instructions, from Bergen you can already do point 3 on this list: * http://atlassec.web.cern.ch/atlassec/Registration.htm 0b7ea76d02adfb55c19defde93d61ff7b32754c2 If you are a short time visitor 0 334 1472 2011-01-18T11:02:08Z Hsa061 18 Created page with ' https://tjinfo.uib.no/nettkonto' wikitext text/x-wiki https://tjinfo.uib.no/nettkonto 033f3f82875849bca71c3aa48b025a0926910240 1473 1472 2011-01-18T11:03:46Z Hsa061 18 wikitext text/x-wiki * Information about how to come to Bergen and accomodation can be found on this link: http://www.uib.no/People/hsa061/DAMARA/Contact_Information.html * You can get a visitors account from your contact person fill in the form on https://tjinfo.uib.no/nettkonto 30360131f037a5f03b588f18f1ebfe2250b29c52 1474 1473 2011-01-18T11:06:29Z Hsa061 18 wikitext text/x-wiki * Information about how to come to Bergen and accomodation can be found on this link: http://www.uib.no/People/hsa061/DAMARA/Contact_Information.html * You can get a visitors account from your contact person fill in the form on https://tjinfo.uib.no/nettkonto the day you arrive. e256d72f4305ad506bdb342b45df40097948a493 Tips 'n' Tricks 0 329 1477 1448 2011-01-19T09:59:02Z Gge002 52 wikitext text/x-wiki ==Programming T&T== #C/C++ #*[[ANSI C]] T&T #*[[ISO/IEC C++]] (Unmanaged C++) T&T #*[[C++/CLI]] (Managed C++) T&T #Matlab T&T #*[[Using MEX-Files to Call C/C++ and Fortran Programs]] #[[LabVIEW T&T]] [[Category:Programming]] [[Category:Tips and Tricks]] 79bcaad9a50c48039d29d80c36a70e36d9f9f041 File:LabView1.png 6 335 1478 2011-01-19T10:03:49Z Gge002 52 Function connected directly to a structure, seemingly without a tunnel or shift register. wikitext text/x-wiki Function connected directly to a structure, seemingly without a tunnel or shift register. 29325cc1c10a11f0b6afd63017d687f683d626e0 File:LabView2.png 6 336 1479 2011-01-19T10:04:39Z Gge002 52 Traced connection of a function to a tunnel in the structure border wikitext text/x-wiki Traced connection of a function to a tunnel in the structure border 6284f3a60a3358f8e848da9d49e94457e530ead0 LabVIEW T&T 0 337 1480 2011-01-19T10:16:33Z Gge002 52 Made the page wikitext text/x-wiki [[File:LabView1.png|thumb|alt=Alternative text|Fig. 1 Function connected dierectly to the border of a structure without going through a tunnel or a shift register.]] [[File:LabView2.png|thumb|alt=Alternative text|Fig. 2 Actual connection revealed by double-clicking on the connecting wire.]] ====Function connected dierectly to the border of a structure without going through a tunnel or a shift register==== An example of the problem is shown in Fig. 1. This seems to be a bug in the graphical interface. Doubleclick on the wire coming into the function and this will reveal the actual connection (Fig. 2) 2a3f7b94f215c8fc424c2834fe02b920002687fa Detector lab 0 21 1481 1452 2011-01-19T11:02:15Z Dfe002 7 updated /* Meetings and conferences */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Oliver * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 31.01. - 10.02.11: EDIT 2011 Excellence in Detectors and Instrumentation Technologies (http://cern.ch/edit2011) * 23.02. - 25.02.11: 3D workshop in Bergen * 02.05. - 06.05.11: IRTG Bergen, medical physics * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. 3fa14f10d3d6da661898bcc26b9bc72b17f2e2e1 1482 1481 2011-01-19T11:21:20Z Dfe002 7 /* Meetings and conferences */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Oliver * Postdoctors: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 31.01. - 10.02.11: EDIT 2011 Excellence in Detectors and Instrumentation Technologies, CERN (http://cern.ch/edit2011) * 23.02. - 25.02.11: 3D workshop, Bergen * 02.03. - 04.02.11: 6th "Trento" Workshop on Advanced Silicon Radiation Detectors, Trento (http://tredi.fbk.eu/) * 02.05. - 06.05.11: IRTG medical physics, Bergen * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. bda12be841518e3d7aa30a4dba06bc0c8c6d83e5 3D Detector Activities 0 23 1483 1456 2011-01-19T14:27:28Z Dfe002 7 /* Documentation */ wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, ... == Documentation == [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3d/3D%20report%2006-03-09.pdf 3D Report Cedric Virmontois] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3d/Masteroppgave_kristine_helle.pdf Master thesis Kristine Helle] ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] 3d69c57c8edc7cdb7da2e63b9a95e3f4a06fcd6e 1484 1483 2011-01-19T14:29:17Z Dfe002 7 /* Documentation */ wikitext text/x-wiki == Introduction to 3D detectors == 3D detectors have three dimensional electrods going through the silicon substrate. The depletion thickness depends on p+ and n+ electrode distance. The advantages with 3D technology is: * It can operate at very low voltages * One can achieve very high radiation hardness * Very fast * Active almost to the edge Schematic drawings of the 3D detector: [[Image:3D_drawing1.png|frameless|250px]] [[Image:3D_drawing2.png|frameless|250px]] == More information == * [http://indico.cern.ch/conferenceDisplay.py?confId=27616 Testbeam talk by Erlend and Ole] * [http://indico.cern.ch/conferenceOtherViews.py?view=standard&confId=28165 3D workshop in Barcelona] * [http://www.sciencedirect.com/science?_ob=ArticleURL&_udi=B6TJM-4J0WP4K-1&_user=596755&_rdoc=1&_fmt=&_orig=search&_sort=d&view=c&_acct=C000030718&_version=1&_urlVersion=0&_userid=596755&md5=e60e7a0a154b6395ba003984f046ad29 3D-state of the art] * 3D proposal by S.I. Parker C.J. Kenneyand and J. Segal (NIMA395(1997)328)] * [http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/ The home of TurboDAQ] == Our Activities == * [[TestBeam Analysis]] * 3DSensor Characteristics * 3DMeasurement System == (Rather) Frequently asked questions == [[Frequently asked questions FAQ]] == Who are we? == * In Bergen: Bjarne, Heidi, ... == Documentation == [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3d/3D%20report%2006-03-09.pdf 3D Report Cedric Virmontois]<br> [http://web.ift.uib.no/~dominik/files/detectorlabwiki/3d/Masteroppgave_kristine_helle.pdf Master thesis Kristine Helle] ==Acknowledgements== Thanks to Alessandro de la Rosa and Ole Rohne for the lots of help we received from them, and to Cedric Virmontois who made work on 3D in Bergen. [[Category:Detector lab]] 664e5397d77de4e40cd79125e6cc431a92c1edd8 User:Jli051 2 338 1485 2011-01-19T15:19:59Z Tbu082 19 Created page with 'Jan Lindroos' wikitext text/x-wiki Jan Lindroos 70793a4e3f4430bcb26fd136fbc48b2a1bf4835a FOCAL - Forward Calorimeter 0 317 1487 1418 2011-01-21T12:33:57Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ == Download section == fe13e30f0885013387f1a8788a48387097bb50b5 1488 1487 2011-01-21T12:44:08Z Dfe002 7 reordering wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == 7ede2dd3b7e4200c098b4189fde5442907358644 1508 1488 2011-02-17T14:00:07Z Dfe002 7 added first parts list wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064 http://www.samtec.com/search/vita57fmc.aspx 0d934c134e141a82c78d57c3b8d1766ca941ea4e 1509 1508 2011-02-17T14:00:23Z Dfe002 7 /* Shopping list */ wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 24fe89d890e19a12b5190d4f250da3efa159178f 1510 1509 2011-02-18T08:42:51Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 1fbb02a3e65b0384c10f0934d50e8ed6b7522c9e Terminology 0 339 1491 2011-02-07T08:03:50Z Hsa061 18 Created page with '== Susy Terminology == * SUSY - Supersymmetry ! * Coannihilation region - Two colliding particles annihiliate == Astrophysics Terminology == == Detector Terminology == == Com…' wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * Coannihilation region - Two colliding particles annihiliate == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 611dee415bef3a78bafd151c17aafc7ab1b32bd8 1495 1491 2011-02-07T09:33:28Z Hsa061 18 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * Coannihilation region - Two colliding particles annihiliate * Drell-Yann == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == d7171cf5d181081d7591ad19a8fd080ba684fff9 1496 1495 2011-02-07T10:12:26Z Hsa061 18 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * Coannihilation region - Two colliding particles annihiliate * Drell-Yann * �OS-SF - Opposite sign same flavour == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == c7059490fa34c21e0f66b925f350a871312e3de5 1499 1496 2011-02-12T18:20:15Z Jli051 54 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * Coannihilation region - Two colliding particles annihiliate * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * �OS-SF - Opposite sign same flavour == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 3aad2f33718949cc4b0c5d8bf6d05e7fd15a6692 1500 1499 2011-02-17T07:34:12Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * �OS-SF - Opposite sign same flavour == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 4ef4d5776747ae07f5bdc189cb2fbc8480056645 1501 1500 2011-02-17T07:36:05Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but in some model it is the gravitino. * NLSP - Next to Lightest Supersymmetric Particle * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 682144ae7b46e4a1f94aebc90c8dd348db6df2de 1503 1501 2011-02-17T07:47:06Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but in some model it is the gravitino. * NLSP - Next to Lightest Supersymmetric Particle * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SU(1) ** SU(2) == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == a9e16cbf32db8c4c3fec874b5091f69cb0008ab0 1504 1503 2011-02-17T07:54:31Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * MSSM - Minimal Supersymmetric extension of the Standard Model * mSUGRA - * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but in some model it is the gravitino. * NLSP - Next to Lightest Supersymmetric Particle * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SPS1: "Typical" mSUGRA scenario ** SPS2: "Focus point" scenario in mSUGRA ** SPS3: Model line into "coannihilation region" in mSUGRA ** SPS4: mSUGRA scenario with large tan &beta; == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 715b83b1e2171b3aac2b547dd1677f2b1468f6d0 1505 1504 2011-02-17T07:57:52Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * MSSM - Minimal Supersymmetric extension of the Standard Model * mSUGRA - * GMSB - * AMSB - * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but in some model it is the gravitino. * NLSP - Next to Lightest Supersymmetric Particle * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SPS1: "Typical" mSUGRA scenario ** SPS2: "Focus point" scenario in mSUGRA ** SPS3: Model line into "coannihilation region" in mSUGRA ** SPS4: mSUGRA scenario with large tan &beta; ** SPS5: mSUGRA scenario with relatively light scalar top quark ** SPS6: mSUGRA-like scenario with non-unified gaugino masses ** SPS7: GMSB scenario with stau NLSP ** SPS8: GMSB scenario with neutralino NLSP ** SPS9: AMSB scenario == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 4ed3c73962cdaf4420e3d64b15a11db1520307ba 1507 1505 2011-02-17T13:21:53Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * MSSM - Minimal Supersymmetric extension of the Standard Model * mSUGRA - Class of SUSY model where SUSY breaking is mediated by gravity. * GMSB - * AMSB - * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but in some model it is the gravitino. * NLSP - Next to Lightest Supersymmetric Particle * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SPS1: "Typical" mSUGRA scenario ** SPS2: "Focus point" scenario in mSUGRA ** SPS3: Model line into "coannihilation region" in mSUGRA ** SPS4: mSUGRA scenario with large tan &beta; ** SPS5: mSUGRA scenario with relatively light scalar top quark ** SPS6: mSUGRA-like scenario with non-unified gaugino masses ** SPS7: GMSB scenario with stau NLSP ** SPS8: GMSB scenario with neutralino NLSP ** SPS9: AMSB scenario == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == d590ff7bdf069bc97453d3946ec7775883c4b5a2 Useful Linux commands 0 340 1493 2011-02-07T08:07:14Z Hsa061 18 Created page with '== Getting started == * ...' wikitext text/x-wiki == Getting started == * ... 9779313ef0ebea084965064bf96e89bf1c465fbd 1494 1493 2011-02-07T08:07:34Z Hsa061 18 wikitext text/x-wiki == Getting started == * ... == For analysis == * ... 2e8d86f2cdecae34a1e6bd888126a40d4f912391 1502 1494 2011-02-17T07:39:49Z St01355 57 wikitext text/x-wiki == Getting started == * Lecture notes from [[Software workshop, 09/09-09]] == For analysis == * ... bf65bcdff2f3ee486ea9bfdd2c14e7d2523eb236 Using MEX-Files to Call C/C++ and Fortran Programs 0 330 1497 1451 2011-02-08T07:56:35Z Gge002 52 wikitext text/x-wiki ==Understanding MEX== MEX-files (MATLAB executables) are used to call large pre-existing C/C++ and Fortran programs from MATLAB without translating them into MATLAB. Another advantage is that C/C++ code is generally faster than MATLAB. The best source of information is MathWorks' knowledge database. To understand C/C++ Source MEX-Files and to see how to compile them see: :*[http://www.mathworks.com/help/techdoc/matlab_external/f43721.html C/C++ Source MEX-Files] (last checked 10 Jan 2011) To understand how to use MEX-Files to Call C/C++ and Fortran Programs see :*[http://www.mathworks.com/help/techdoc/matlab_external/f29502.html Using MEX-Files to Call C/C++ and Fortran Programs] (last checked 10 Jan 2011) ==Tips 'n' Tricks== #'''Where to place the gateway routine within the C/C++ program''' #*''The whole code can be placed in the Gateway routine'' #*''At the end'' - it looks like the gateway routine should be the last routine in the code if more routines are present. This sheds the problem with undefined variables and alike. I (GG) haven't found any place in the knowledge base where this is mentioned. Maybe it is not true in all cases either. Here follows an example that is a modification of the original MATLAB code from the knowledge database (see link "MEX-Files to Call C/C++ and Fortran Programs" above). In the case below three input parameters are required, while in the original code only two are necessary. A comparison between the two version helps to find the in-s and out-s. <source lang="cpp"> #include "mex.h" #include "matrix.h" /* * arrayProduct.c * Multiplies an input scalar times a 1xN matrix * and outputs a 1xN matrix * * This is a modified version of the MEX-file from MathWorks' knowledge database. * http://www.mathworks.com/help/techdoc/matlab_external/f29502.html * * The modifications are (LINE REFERENCES DIFFERENT FROM ORIGINAL): * the original "double multiplier" is replaced with "double multiplier1" (line 61) * introduced "double multiplier2" (line 62) * line 37 - added "double w" * line 42 - added " * w " * line 73 - changed message to be displayed * line 98, 99 - added those lines * line 113 - added "multiplier2" and changed "multiplier" with "multiplier1" */ /**************************************************/ /**************************************************/ /************* SOME ROUTINE *************/ /**************************************************/ /**************************************************/ /* Multiplies an input scalar times a 1xN matrix */ /* and output is a 1xN matrix */ /**************************************************/ /**************************************************/ void arrayProduct(double x, double *y, double *z, double w, mwSize n) { mwSize i; for (i=0; i<n; i++) { z[i] = x * y[i] * w; } } /**********************************************************/ /**********************************************************/ /************* THE GATEWAY FUNCTION *************/ /**********************************************************/ /**********************************************************/ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /*** Variable declarations ***/ double multiplier1; // input scalar double multiplier2; // input scalar double *inMatrix; // 1xN input matrix mwSize ncols; // size of matrix double *outMatrix; // output matrix /*** CODE ***/ // check for proper number of arguments if(nrhs!=3) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nrhs", "Three inputs required."); } if(nlhs!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs", "One output required."); } // make sure the first input argument is scalar if( !mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || mxGetNumberOfElements(prhs[0])!=1 ) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notScalar", "Input multiplier must be a scalar."); } // check that number of rows in second input argument is 1 if(mxGetM(prhs[1])!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notRowVector", "Input must be a row vector."); } // get the value of the first scalar input multiplier1 = mxGetScalar(prhs[0]); // get the value of the second scalar input multiplier2 = mxGetScalar(prhs[2]); // create a pointer to the real data in the input matrix inMatrix = mxGetPr(prhs[1]); // get dimensions of the input matrix ncols = mxGetN(prhs[1]); // create the output matrix */ plhs[0] = mxCreateDoubleMatrix(1,ncols,mxREAL); // get a pointer to the real data in the output matrix outMatrix = mxGetPr(plhs[0]); // call the computational routine arrayProduct(multiplier1,inMatrix,outMatrix,multiplier2,ncols); } </source> [[Category:Programming]] [[Category:Tips and Tricks]] [[Category:MATLAB]] f16bd6a1a0c337c28d66424ea9d7e2705ce504dd 1498 1497 2011-02-08T07:58:09Z Gge002 52 wikitext text/x-wiki ==Understanding MEX== MEX-files (MATLAB executables) are used to call large pre-existing C/C++ and Fortran programs from MATLAB without translating them into MATLAB. Another advantage is that C/C++ code is generally faster than MATLAB. The best source of information is MathWorks' knowledge database. To understand C/C++ Source MEX-Files and to see how to compile them see: :*[http://www.mathworks.com/help/techdoc/matlab_external/f43721.html C/C++ Source MEX-Files] (last checked 10 Jan 2011) To understand how to use MEX-Files to Call C/C++ and Fortran Programs see :*[http://www.mathworks.com/help/techdoc/matlab_external/f29502.html Using MEX-Files to Call C/C++ and Fortran Programs] (last checked 10 Jan 2011) ==Tips 'n' Tricks== #'''Where to place the gateway routine within the C/C++ program''' #*''The whole code can be placed in the Gateway routine'' #*''At the end'' - it looks like the gateway routine should be the last routine in the code if more routines are present. This sheds the problem with undefined variables and alike. I (GG) haven't found any place in the knowledge base where this is mentioned. Maybe it is not true in all cases either. Here follows an example that is a modification of the original MATLAB code from the knowledge database (see link "MEX-Files to Call C/C++ and Fortran Programs" above). In the case below three input parameters are required, while in the original code only two are necessary. A comparison between the two version helps to find the in-s and out-s. <source lang="cpp"> #include "mex.h" #include "matrix.h" /* * arrayProduct.c * Multiplies one input scalar times a 1xN matrix, times another input scalar * and outputs a 1xN matrix * * This is a modified version of the MEX-file from MathWorks' knowledge database. * http://www.mathworks.com/help/techdoc/matlab_external/f29502.html * * The modifications are (LINE REFERENCES DIFFERENT FROM ORIGINAL): * the original "double multiplier" is replaced with "double multiplier1" (line 61) * introduced "double multiplier2" (line 62) * line 37 - added "double w" * line 42 - added " * w " * line 73 - changed message to be displayed * line 98, 99 - added those lines * line 113 - added "multiplier2" and changed "multiplier" with "multiplier1" */ /**************************************************/ /**************************************************/ /************* SOME ROUTINE *************/ /**************************************************/ /**************************************************/ /* Multiplies an input scalar times a 1xN matrix */ /* and output is a 1xN matrix */ /**************************************************/ /**************************************************/ void arrayProduct(double x, double *y, double *z, double w, mwSize n) { mwSize i; for (i=0; i<n; i++) { z[i] = x * y[i] * w; } } /**********************************************************/ /**********************************************************/ /************* THE GATEWAY FUNCTION *************/ /**********************************************************/ /**********************************************************/ void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { /*** Variable declarations ***/ double multiplier1; // input scalar double multiplier2; // input scalar double *inMatrix; // 1xN input matrix mwSize ncols; // size of matrix double *outMatrix; // output matrix /*** CODE ***/ // check for proper number of arguments if(nrhs!=3) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nrhs", "Three inputs required."); } if(nlhs!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:nlhs", "One output required."); } // make sure the first input argument is scalar if( !mxIsDouble(prhs[0]) || mxIsComplex(prhs[0]) || mxGetNumberOfElements(prhs[0])!=1 ) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notScalar", "Input multiplier must be a scalar."); } // check that number of rows in second input argument is 1 if(mxGetM(prhs[1])!=1) { mexErrMsgIdAndTxt("MyToolbox:arrayProduct:notRowVector", "Input must be a row vector."); } // get the value of the first scalar input multiplier1 = mxGetScalar(prhs[0]); // get the value of the second scalar input multiplier2 = mxGetScalar(prhs[2]); // create a pointer to the real data in the input matrix inMatrix = mxGetPr(prhs[1]); // get dimensions of the input matrix ncols = mxGetN(prhs[1]); // create the output matrix */ plhs[0] = mxCreateDoubleMatrix(1,ncols,mxREAL); // get a pointer to the real data in the output matrix outMatrix = mxGetPr(plhs[0]); // call the computational routine arrayProduct(multiplier1,inMatrix,outMatrix,multiplier2,ncols); } </source> [[Category:Programming]] [[Category:Tips and Tricks]] [[Category:MATLAB]] fa736a74a3f07615744effbb2fbaa100b609d352 User:St01355 2 341 1506 2011-02-17T12:27:48Z Tbu082 19 Created page with 'Trygve Buanes' wikitext text/x-wiki Trygve Buanes 7f817bd175d7cfbce037f316f2bc9ac8e8371107 FOCAL - Forward Calorimeter 0 317 1511 1510 2011-02-18T08:59:44Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 732ec45788ed649ae70ce6fc480aa79930066710 1512 1511 2011-02-18T09:56:46Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31 2x USB cables - F1076669 - F1308878 851ce7a5d71152cbcba4275b7771124221a13727 1513 1512 2011-02-18T09:57:00Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 b934c3e397a97ca23eec3510b0a61541b03de5c9 1517 1513 2011-02-21T07:00:20Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == == Readout electronics == === Adapterboard /Fanoutboard === The schematics of the board can be found here: [http://web.ift.uib.no/~dominik/files/focal/Adapter.pdf Adapterboard] === Spartanboard === === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 5cef4b154b58c0551cf110acc16fa8cfa03dee64 1535 1517 2011-04-07T14:59:23Z Nfyku 4 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:Mimosa Phase-1]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The schematics of the boards is here: [[File:Adapter board]]. === Spartanboard === === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 7996596a50f25e75c3867e56faf8508b09e9b9a7 1537 1535 2011-04-07T15:06:02Z Nfyku 4 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080724.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The schematics of the boards is here: [[File:Adapter board ]]. === Spartanboard === === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board would run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Xirtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 cca5e1dcc732d0284d37ee70416760c84ea1c2db 1539 1537 2011-04-07T15:11:35Z Nfyku 4 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080724.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 f843b28f8d71b6798714355b1a2f8efbad523a94 1544 1539 2011-04-12T08:37:34Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 433f0c2b7263a7cb42c5fe989f9bdbac2462c910 1546 1544 2011-04-12T08:42:13Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 2218752956292c9b38a1e1b904b6f24e4b2fa8f1 1547 1546 2011-04-12T08:44:23Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [Xilinx Virtex 6 development board] http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 88799713d4166c66573a669539f793011f04cce8 1548 1547 2011-04-12T08:45:09Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [[Xilinx Virtex 6 development board] http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm ]as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 befe5f49a5023ea6f69f515f56539d5ad49fc9da 1549 1548 2011-04-12T08:45:36Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [[Xilinx Virtex 6 development board:http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm ]]as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 54dbf16be5a5cb60d2a11149e04da9f6f38bd9a2 1550 1549 2011-04-12T08:46:09Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [[Xilinx Virtex 6 development board]:http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm ]as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 7474ceb6a305c148bbbce4cf80088de594cd5060 1551 1550 2011-04-12T08:54:06Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a <a href="http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm">Xilinx Virtex 6 development board</a> as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 fa42803277a0831b2bbe2b549ad8c0c93244995d 1552 1551 2011-04-12T08:55:25Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a Xilinx Virtex 6 development board as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 433f0c2b7263a7cb42c5fe989f9bdbac2462c910 1554 1552 2011-04-12T09:00:03Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [[Xilinx Virtex 6 development board]] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 1dbbf4a91c55f8ece4156440088c6d69bf8e50e1 1555 1554 2011-04-12T09:05:42Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 3ff10bd0c33a1ef3d7dc4c0f80e94eb23b74958d 1556 1555 2011-04-12T09:24:15Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf|preliminary data sheet]] == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 30b02748f31ef47c24c669797b6127334e08acab 1557 1556 2011-04-12T09:24:43Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 114352005f86464908a0fca6a09fd6f29476481e 1558 1557 2011-04-12T09:33:12Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[File:PH1-UserMan-20080916.pdf|manual]] preliminary data sheet == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. The schematics of the boards is here: [[File:Focal_read-out_board_schematics.pdf]]. === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 a01d910527563fe517e633b6f3f5b8a9b5685125 1559 1558 2011-04-12T09:48:53Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == [[Media:PH1-UserMan-20080916.pdf|preliminary data sheet]] == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 85778a2b03c079894c0362946f8b6142b506c45a Terminology 0 339 1514 1507 2011-02-18T11:07:11Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * MSSM - Minimal Supersymmetric extension of the Standard Model * mSUGRA - Class of SUSY model where SUSY breaking is mediated by gravity. * GMSB - * AMSB - * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but may be other particles (gravition, axino, ...) in some models * NLSP - Next to Lightest Supersymmetric Particle * LOSP - Lightest Ordinary Supersymmetric Particle * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SPS1: "Typical" mSUGRA scenario ** SPS2: "Focus point" scenario in mSUGRA ** SPS3: Model line into "coannihilation region" in mSUGRA ** SPS4: mSUGRA scenario with large tan &beta; ** SPS5: mSUGRA scenario with relatively light scalar top quark ** SPS6: mSUGRA-like scenario with non-unified gaugino masses ** SPS7: GMSB scenario with stau NLSP ** SPS8: GMSB scenario with neutralino NLSP ** SPS9: AMSB scenario == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 70da57aa76d7f133ddcfa83d34b38ee04a0e0ee4 1515 1514 2011-02-18T11:09:08Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * MSSM - Minimal Supersymmetric extension of the Standard Model * mSUGRA - Class of SUSY model where SUSY breaking is mediated by gravity. * GMSB - * AMSB - * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but may be other particles (gravition, axino, ...) in some models * NLSP - Next to Lightest Supersymmetric Particle * LOSP - Lightest Ordinary/Observable Supersymmetric Particle, relevant in models where LSP is in a hidden sector * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SPS1: "Typical" mSUGRA scenario ** SPS2: "Focus point" scenario in mSUGRA ** SPS3: Model line into "coannihilation region" in mSUGRA ** SPS4: mSUGRA scenario with large tan &beta; ** SPS5: mSUGRA scenario with relatively light scalar top quark ** SPS6: mSUGRA-like scenario with non-unified gaugino masses ** SPS7: GMSB scenario with stau NLSP ** SPS8: GMSB scenario with neutralino NLSP ** SPS9: AMSB scenario == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 9fa9696458f7f1f490652410f8ec5f463530f093 1516 1515 2011-02-18T11:09:42Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * MSSM - Minimal Supersymmetric extension of the Standard Model * mSUGRA - Class of SUSY model where SUSY breaking is mediated by gravity. * GMSB - * AMSB - * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but may be other particles (gravition, axino, ...) in some models. LSP is assumed to be stable in moste models. * NLSP - Next to Lightest Supersymmetric Particle * LOSP - Lightest Ordinary/Observable Supersymmetric Particle, relevant in models where LSP is in a hidden sector * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SPS1: "Typical" mSUGRA scenario ** SPS2: "Focus point" scenario in mSUGRA ** SPS3: Model line into "coannihilation region" in mSUGRA ** SPS4: mSUGRA scenario with large tan &beta; ** SPS5: mSUGRA scenario with relatively light scalar top quark ** SPS6: mSUGRA-like scenario with non-unified gaugino masses ** SPS7: GMSB scenario with stau NLSP ** SPS8: GMSB scenario with neutralino NLSP ** SPS9: AMSB scenario == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 2b35b51f9221d5ff65493a08a2d017f071be3560 1518 1516 2011-02-21T12:46:21Z St01355 57 wikitext text/x-wiki == Susy Terminology == * SUSY - Supersymmetry ! * MSSM - Minimal Supersymmetric extension of the Standard Model * mSUGRA - Class of SUSY model where SUSY breaking is mediated by gravity. * GMSB - Gauge Mediated SUSY breaking * AMSB - * LSP - Lightest Supersymmetric Particle. In most model the lightest neutralino is LSP, but may be other particles (gravition, axino, ...) in some models. LSP is assumed to be stable in moste models. * NLSP - Next to Lightest Supersymmetric Particle * LOSP - Lightest Ordinary/Observable Supersymmetric Particle, relevant in models where LSP is in a hidden sector * Coannihilation region - Region in SUSY parameters space where the mass difference between NLSP and LSP is small (few GeV). This enhances the probability of NLSP and LSP annihilating with each other bringing the relic density down to a level consistent with astrophysical observations. * Drell-Yan process - Quark+anti-quark -> Z/photon -> lepton+anti-lepton * OS-SF - Opposite sign same flavour * SUSY benchmark points - points in SUSY parameter space which are chosen as test points in simulation studies. The benchmark points are chosen such that they are representative for different regions of the parameter space ** SPS1: "Typical" mSUGRA scenario ** SPS2: "Focus point" scenario in mSUGRA ** SPS3: Model line into "coannihilation region" in mSUGRA ** SPS4: mSUGRA scenario with large tan &beta; ** SPS5: mSUGRA scenario with relatively light scalar top quark ** SPS6: mSUGRA-like scenario with non-unified gaugino masses ** SPS7: GMSB scenario with stau NLSP ** SPS8: GMSB scenario with neutralino NLSP ** SPS9: AMSB scenario == Astrophysics Terminology == == Detector Terminology == == Computing Terminology == 6c261641ea0394e2b09c44dea86bcd902445824e DAMARA 0 331 1519 1492 2011-03-01T10:18:29Z Jli051 54 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Other stuff: * [[Useful Linux commands]] * <a href="http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf">Small intro to Linux (pdf)</a> 1259eefd2c43b8de416b62da4750cb1dd56e2bd5 1520 1519 2011-03-01T10:19:44Z Jli051 54 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Other stuff: * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] 2df1062f4457b9ed16454397b114c626b1c3744b 1521 1520 2011-03-01T10:25:45Z Jli051 54 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] 5de3855dce89d448b0c51daf2829568e4af7dafd 1522 1521 2011-03-08T16:05:07Z Jli051 54 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * Info about D3PD analysis variables * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] 070af48cd2352426c99050a0545a75c99b02b198 1526 1522 2011-03-08T16:24:56Z Jli051 54 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] 6c0350c400a0ced10cb345015955f6e16ffc30c8 1560 1526 2011-04-13T15:14:32Z St01355 57 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] == [[Results]] == * [[Publications|Results#Publications] * [[Theses]] * [[Presentations]] 1b4e904424e2a93df7ed557b12a780dcf87ccd1b 1567 1560 2011-04-13T15:36:33Z St01355 57 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] == [[Results]] == * [[Results#Publications|Publications]] * [[Theses]] * [[Presentations]] e44202efdda243e3674677cb8a8baff6bdbbedca Info about D3PD analysis variables 0 343 1527 2011-03-08T16:27:23Z Jli051 54 Created page with '== Analysis variables == '''Meta-data''' int RunNumber; '''Trigger''' float trig_EF_met_MEx; float trig_EF_met_MEy; int trig_L2_jet_n; std::vector<float>* trig_L2_jet_pt…' wikitext text/x-wiki == Analysis variables == '''Meta-data''' int RunNumber; '''Trigger''' float trig_EF_met_MEx; float trig_EF_met_MEy; int trig_L2_jet_n; std::vector<float>* trig_L2_jet_pt; bool L1_J55; '''Jet''' int jet_n; ''Number of jets in event (extra conditions?)'' std::vector<float>* jet_eta; std::vector<float>* jet_phi; std::vector<float>* jet_m; std::vector<float>* jet_flavor_weight_SV0; std::vector<float>* jet_pt; ''Transverse momentum of jets'' std::vector<float>* jet_emscale_pt; std::vector<float>* jet_n90; std::vector<float>* jet_timing; std::vector<float>* jet_quality; std::vector<float>* jet_emfrac; std::vector<float>* jet_hecf; std::vector<float>* jet_EMJES; std::vector<float>* jet_jvtxf; std::vector<float>* jet_fmax; '''Vertex''' std::vector<int>* vx_nTracks; '''Missing transverse energy''' float MET_Final_et; float MET_Final_etx; float MET_Final_ety; float MET_Final_phi; float MET_Final_sumet; float MET_LocHadTopo_etx; float MET_MuonBoy_etx; float MET_LocHadTopo_ety; float MET_MuonBoy_ety; '''Electron''' int el_n; std::vector<int>* el_author; std::vector<float>* el_pt; std::vector<float>* el_eta; std::vector<float>* el_phi; std::vector<float>* el_cl_eta; std::vector<float>* el_cl_phi; std::vector<int>* el_goodOQ; '''Muon''' int mu_staco_n; std::vector<float>* mu_staco_matchchi2; std::vector<float>* mu_staco_isCombinedMuon; std::vector<float>* mu_staco_pt; std::vector<float>* mu_staco_eta; std::vector<float>* mu_staco_phi; std::vector<float>* mu_staco_ptcone20; std::vector<float>* mu_staco_me_qoverp_exPV; std::vector<float>* mu_staco_me_theta_exPV; std::vector<float>* mu_staco_id_qoverp_exPV; std::vector<float>* mu_staco_id_theta_exPV; '''Tau''' int tau_n; std::vector<float>* tau_Et; std::vector<float>* tau_eta; std::vector<float>* tau_phi; std::vector<float>* tau_m; std::vector<int>* tau_nLooseTrk; std::vector<int>* tau_nProng; std::vector<int>* tau_numTrack; std::vector<float>* tau_secvtx_chiSquared; std::vector<float>* tau_secvtx_numberDoF; std::vector<float>* tau_secvtx_x; std::vector<float>* tau_secvtx_y; std::vector<float>* tau_secvtx_z; std::vector<int>* tau_BDTEleScore; std::vector<float>* tau_BDTJetScore; std::vector<float>* tau_electronVetoTight; std::vector<float>* tau_muonVeto; std::vector<float>* tau_charge; std::vector<float>* tau_seedCalo_etEMCalib; std::vector<float>* tau_seedCalo_etHadCalib; 4953e78ad0b400c17e0f25919745c1b143625131 1528 1527 2011-03-08T16:36:07Z Jli051 54 wikitext text/x-wiki Please feel free to add more variables and what they contain. == Analysis variables == '''Meta-data''' int RunNumber; '''Trigger''' float trig_EF_met_MEx; float trig_EF_met_MEy; int trig_L2_jet_n; std::vector<float>* trig_L2_jet_pt; bool L1_J55; '''Jet''' int jet_n; ''Number of jets in event (extra conditions?)'' std::vector<float>* jet_eta; std::vector<float>* jet_phi; std::vector<float>* jet_m; std::vector<float>* jet_flavor_weight_SV0; std::vector<float>* jet_pt; ''Transverse momentum of jets in MeV'' std::vector<float>* jet_emscale_pt; std::vector<float>* jet_n90; std::vector<float>* jet_timing; std::vector<float>* jet_quality; std::vector<float>* jet_emfrac; std::vector<float>* jet_hecf; std::vector<float>* jet_EMJES; std::vector<float>* jet_jvtxf; std::vector<float>* jet_fmax; '''Vertex''' std::vector<int>* vx_nTracks; '''Missing transverse energy''' float MET_Final_et; '' Total amount of missing E_T in MeV '' float MET_Final_etx; float MET_Final_ety; float MET_Final_phi; float MET_Final_sumet; float MET_LocHadTopo_etx; float MET_MuonBoy_etx; float MET_LocHadTopo_ety; float MET_MuonBoy_ety; '''Electron''' int el_n; '' Number of electrons in event'' std::vector<int>* el_author; std::vector<float>* el_pt; ''Transverse momentum of electrons in MeV'' std::vector<float>* el_eta; std::vector<float>* el_phi; std::vector<float>* el_cl_eta; std::vector<float>* el_cl_phi; std::vector<int>* el_goodOQ; '''Muon''' int mu_staco_n; std::vector<float>* mu_staco_matchchi2; std::vector<float>* mu_staco_isCombinedMuon; std::vector<float>* mu_staco_pt; std::vector<float>* mu_staco_eta; std::vector<float>* mu_staco_phi; std::vector<float>* mu_staco_ptcone20; std::vector<float>* mu_staco_me_qoverp_exPV; std::vector<float>* mu_staco_me_theta_exPV; std::vector<float>* mu_staco_id_qoverp_exPV; std::vector<float>* mu_staco_id_theta_exPV; '''Tau''' int tau_n; '' Number of taus '' std::vector<float>* tau_Et; ''Transverse energy of taus in MeV'' std::vector<float>* tau_eta; std::vector<float>* tau_phi; std::vector<float>* tau_m; std::vector<int>* tau_nLooseTrk; std::vector<int>* tau_nProng; std::vector<int>* tau_numTrack; std::vector<float>* tau_secvtx_chiSquared; std::vector<float>* tau_secvtx_numberDoF; std::vector<float>* tau_secvtx_x; std::vector<float>* tau_secvtx_y; std::vector<float>* tau_secvtx_z; std::vector<int>* tau_BDTEleScore; std::vector<float>* tau_BDTJetScore; std::vector<float>* tau_electronVetoTight; std::vector<float>* tau_muonVeto; std::vector<float>* tau_charge; std::vector<float>* tau_seedCalo_etEMCalib; std::vector<float>* tau_seedCalo_etHadCalib; 4596f4b492a64150dc755ddeabb9c416b49bb659 1529 1528 2011-03-14T10:50:15Z Jli051 54 wikitext text/x-wiki Please feel free to add more variables and what they contain. == Analysis variables == '''Meta-data''' int RunNumber; '''Trigger''' float trig_EF_met_MEx; float trig_EF_met_MEy; int trig_L2_jet_n; std::vector<float>* trig_L2_jet_pt; bool L1_J55; '''Jet''' int jet_n; ''Number of jets in event (extra conditions?)'' std::vector<float>* jet_eta; std::vector<float>* jet_phi; std::vector<float>* jet_m; std::vector<float>* jet_flavor_weight_SV0; std::vector<float>* jet_pt; ''Transverse momentum of jets in MeV'' std::vector<float>* jet_emscale_pt; std::vector<float>* jet_n90; ''minimum number of cells containing at least 90% of the jet energy'' std::vector<float>* jet_timing; std::vector<float>* jet_quality; std::vector<float>* jet_emfrac; ''Energy fraction that is due to electrons and photons'' std::vector<float>* jet_hecf; ''Energy fraction deposited in hadronic endcap calorimeter (HEC) std::vector<float>* jet_EMJES; std::vector<float>* jet_jvtxf; std::vector<float>* jet_fmax; '''Vertex''' std::vector<int>* vx_nTracks; '''Missing transverse energy''' float MET_Final_et; '' Total amount of missing E_T in MeV '' float MET_Final_etx; float MET_Final_ety; float MET_Final_phi; float MET_Final_sumet; float MET_LocHadTopo_etx; float MET_MuonBoy_etx; float MET_LocHadTopo_ety; float MET_MuonBoy_ety; '''Electron''' int el_n; '' Number of electrons in event'' std::vector<int>* el_author; std::vector<float>* el_pt; ''Transverse momentum of electrons in MeV'' std::vector<float>* el_eta; std::vector<float>* el_phi; std::vector<float>* el_cl_eta; std::vector<float>* el_cl_phi; std::vector<int>* el_goodOQ; '''Muon''' int mu_staco_n; std::vector<float>* mu_staco_matchchi2; std::vector<float>* mu_staco_isCombinedMuon; std::vector<float>* mu_staco_pt; std::vector<float>* mu_staco_eta; std::vector<float>* mu_staco_phi; std::vector<float>* mu_staco_ptcone20; std::vector<float>* mu_staco_me_qoverp_exPV; std::vector<float>* mu_staco_me_theta_exPV; std::vector<float>* mu_staco_id_qoverp_exPV; std::vector<float>* mu_staco_id_theta_exPV; '''Tau''' int tau_n; '' Number of taus '' std::vector<float>* tau_Et; ''Transverse energy of taus in MeV'' std::vector<float>* tau_eta; std::vector<float>* tau_phi; std::vector<float>* tau_m; std::vector<int>* tau_nLooseTrk; std::vector<int>* tau_nProng; std::vector<int>* tau_numTrack; std::vector<float>* tau_secvtx_chiSquared; std::vector<float>* tau_secvtx_numberDoF; std::vector<float>* tau_secvtx_x; std::vector<float>* tau_secvtx_y; std::vector<float>* tau_secvtx_z; std::vector<int>* tau_BDTEleScore; std::vector<float>* tau_BDTJetScore; std::vector<float>* tau_electronVetoTight; std::vector<float>* tau_muonVeto; std::vector<float>* tau_charge; std::vector<float>* tau_seedCalo_etEMCalib; std::vector<float>* tau_seedCalo_etHadCalib; 4457492e1e0890028111baa410a9b9bd94b81a3a 1530 1529 2011-03-14T10:52:29Z Jli051 54 wikitext text/x-wiki Please feel free to add more variables and what they contain. == Analysis variables == '''Meta-data''' int RunNumber; '''Trigger''' float trig_EF_met_MEx; float trig_EF_met_MEy; int trig_L2_jet_n; std::vector<float>* trig_L2_jet_pt; bool L1_J55; ''Level 1 Jet trigger (jet energy>55 GeV ?) '''Jet''' int jet_n; ''Number of jets in event (extra conditions?)'' std::vector<float>* jet_eta; std::vector<float>* jet_phi; std::vector<float>* jet_m; std::vector<float>* jet_flavor_weight_SV0; std::vector<float>* jet_pt; ''Transverse momentum of jets in MeV'' std::vector<float>* jet_emscale_pt; std::vector<float>* jet_n90; ''minimum number of cells containing at least 90% of the jet energy'' std::vector<float>* jet_timing; std::vector<float>* jet_quality; std::vector<float>* jet_emfrac; ''Energy fraction that is due to electrons and photons'' std::vector<float>* jet_hecf; ''Energy fraction deposited in hadronic endcap calorimeter (HEC) std::vector<float>* jet_EMJES; std::vector<float>* jet_jvtxf; std::vector<float>* jet_fmax; '''Vertex''' std::vector<int>* vx_nTracks; '''Missing transverse energy''' float MET_Final_et; '' Total amount of missing E_T in MeV '' float MET_Final_etx; float MET_Final_ety; float MET_Final_phi; float MET_Final_sumet; float MET_LocHadTopo_etx; float MET_MuonBoy_etx; float MET_LocHadTopo_ety; float MET_MuonBoy_ety; '''Electron''' int el_n; '' Number of electrons in event'' std::vector<int>* el_author; std::vector<float>* el_pt; ''Transverse momentum of electrons in MeV'' std::vector<float>* el_eta; std::vector<float>* el_phi; std::vector<float>* el_cl_eta; std::vector<float>* el_cl_phi; std::vector<int>* el_goodOQ; '''Muon''' int mu_staco_n; std::vector<float>* mu_staco_matchchi2; std::vector<float>* mu_staco_isCombinedMuon; std::vector<float>* mu_staco_pt; std::vector<float>* mu_staco_eta; std::vector<float>* mu_staco_phi; std::vector<float>* mu_staco_ptcone20; std::vector<float>* mu_staco_me_qoverp_exPV; std::vector<float>* mu_staco_me_theta_exPV; std::vector<float>* mu_staco_id_qoverp_exPV; std::vector<float>* mu_staco_id_theta_exPV; '''Tau''' int tau_n; '' Number of taus '' std::vector<float>* tau_Et; ''Transverse energy of taus in MeV'' std::vector<float>* tau_eta; std::vector<float>* tau_phi; std::vector<float>* tau_m; std::vector<int>* tau_nLooseTrk; std::vector<int>* tau_nProng; std::vector<int>* tau_numTrack; std::vector<float>* tau_secvtx_chiSquared; std::vector<float>* tau_secvtx_numberDoF; std::vector<float>* tau_secvtx_x; std::vector<float>* tau_secvtx_y; std::vector<float>* tau_secvtx_z; std::vector<int>* tau_BDTEleScore; std::vector<float>* tau_BDTJetScore; std::vector<float>* tau_electronVetoTight; std::vector<float>* tau_muonVeto; std::vector<float>* tau_charge; std::vector<float>* tau_seedCalo_etEMCalib; std::vector<float>* tau_seedCalo_etHadCalib; 4407a43cddd74542356a22ad32febd91556ab4b2 Detector lab 0 21 1531 1482 2011-03-29T09:08:52Z Hsa061 18 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Oliver * Postdoctors: Trygve * Researcher: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre * Phone number: 55588306 == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332. * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 31.01. - 10.02.11: EDIT 2011 Excellence in Detectors and Instrumentation Technologies, CERN (http://cern.ch/edit2011) * 23.02. - 25.02.11: 3D workshop, Bergen * 02.03. - 04.02.11: 6th "Trento" Workshop on Advanced Silicon Radiation Detectors, Trento (http://tredi.fbk.eu/) * 02.05. - 06.05.11: IRTG medical physics, Bergen * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. 2f40f35ae7819090fe48d1f13336b2806e0a5364 1532 1531 2011-03-29T09:09:40Z Hsa061 18 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Oliver * Postdoctors: Trygve * Researcher: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332 (55588306) * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 31.01. - 10.02.11: EDIT 2011 Excellence in Detectors and Instrumentation Technologies, CERN (http://cern.ch/edit2011) * 23.02. - 25.02.11: 3D workshop, Bergen * 02.03. - 04.02.11: 6th "Trento" Workshop on Advanced Silicon Radiation Detectors, Trento (http://tredi.fbk.eu/) * 02.05. - 06.05.11: IRTG medical physics, Bergen * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. 1f6c75d8faa763b9fd7c48c30a857c0b82550db0 1533 1532 2011-04-01T08:12:36Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Oliver * Postdoctors: Trygve * Researcher: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332 (55588306) * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 02.05. - 06.05.11: IRTG medical physics, Bergen * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. 65c8a029f07e04e6af836faaae21eaedb4e165d4 1534 1533 2011-04-01T08:23:49Z Dfe002 7 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Laura, Ben * Postdoctors: Trygve * Researcher: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332 (55588306) * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 02.05. - 06.05.11: IRTG medical physics, Bergen * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. f8ce350c2958043c076ac4068ac1edf2df62b894 File:Focal read-out board schematics.pdf 6 345 1538 2011-04-07T15:08:04Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 1545 1538 2011-04-12T08:38:19Z Sya081 50 uploaded a new version of "[[File:Focal read-out board schematics.pdf]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:PH1-UserMan-20080916.pdf 6 346 1542 2011-04-12T08:34:35Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 1543 1542 2011-04-12T08:35:38Z Sya081 50 uploaded a new version of "[[File:PH1-UserMan-20080916.pdf]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 DamaraResults 0 348 1561 2011-04-13T15:16:13Z St01355 57 Created page with '== Publications == == Theses == == Internal notes == == Presentations == == Outreach ==' wikitext text/x-wiki == Publications == == Theses == == Internal notes == == Presentations == == Outreach == c5285f1bdb1d30c8d9ffaf6fe671c3da3366abf7 1562 1561 2011-04-13T15:17:29Z St01355 57 wikitext text/x-wiki == Publications == == Theses == == Internal notes == == Presentations == === Conferences === === Seminars etc === === Working groups etc === == Outreach == 0fb34d79efc6fb05868fb5a9d37a6e3d18788ce1 1563 1562 2011-04-13T15:17:50Z St01355 57 wikitext text/x-wiki == Publications == == Theses == == Internal notes == == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Outreach == e45ba0cdcfc4dc682584d603e32d2fe513aa5102 1564 1563 2011-04-13T15:31:04Z St01355 57 wikitext text/x-wiki == Publications == == Theses == == Internal notes == == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Outreach == Verdens største mikroskop – om ATLAS-eksperimentet på CERN, Trygve Buanes, [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] 26fb5a8af8996cb5989b44138ebb0a08712f5350 1565 1564 2011-04-13T15:31:58Z St01355 57 wikitext text/x-wiki == Publications == == Theses == == Internal notes == == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', Trygve Buanes, [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] 648b2bb3123ebed60d14acc11ad873a7a5a74739 1566 1565 2011-04-13T15:32:34Z St01355 57 wikitext text/x-wiki == Publications == == Theses == == Internal notes == == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011], Trygve Buanes ec673df64ca06f45d47a4f2e071adac09740d327 DAMARA 0 331 1568 1567 2011-04-13T15:38:58Z St01355 57 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] == [[Results]] == * [[Results#Outreach|Outreach]] * [[Results#Presentations|Presentations]] * [[Results#Publications|Publications]] * [[Results#Theses|Theses]] f923eec74914153a4995438e041f692bb7999a14 1577 1568 2011-04-15T09:23:08Z St01355 57 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 6278c2cb9b22f0d4c9ad0c93c017887a2b393030 DamaraResults 0 348 1569 1566 2011-04-13T15:40:09Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011], Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === 228bf5ce46fe930f6b42a3a07c21ccb7c7331805 1570 1569 2011-04-13T15:42:17Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011], Trygve Buanes * ''Masterprogrammer i partikkelfysikk, [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk|Fellesseminar/infomøte], Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === c96adca11506a4ad98846ade915d46eadce8a57b 1571 1570 2011-04-13T15:43:59Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011], 13. mars 2011, Trygve Buanes * ''Masterprogrammer i partikkelfysikk, [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte], 18.mars 2011, Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === 5c51a416d16cf7f91989612439cc7313f3d10679 1572 1571 2011-04-13T15:44:31Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18.mars 2011), Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === 2eb775d2e9a6f32a0e124e632dcb8e71f9596c92 1573 1572 2011-04-15T08:32:44Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18.mars 2011), Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === 1f9456f5aebad9ba7fe795ae2e6a75fc3063ea11 1574 1573 2011-04-15T08:33:02Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18.mars 2011), Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === f7bab8805fb3083f91fa829474d31e279cf1bf96 1575 1574 2011-04-15T09:21:47Z St01355 57 moved [[Results]] to [[DamaraResults]] wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18.mars 2011), Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === f7bab8805fb3083f91fa829474d31e279cf1bf96 1606 1575 2011-06-23T12:15:20Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18.mars 2011), Trygve Buanes == Presentations == === Conferences === === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === 67472eba808183b1ae7447c88fcba37b1e9d1e8c 1608 1606 2011-06-27T12:21:19Z Jli051 54 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18.mars 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === d643e919a9db452719ebea4e04d75ace697de1b5 Results 0 349 1576 2011-04-15T09:21:47Z St01355 57 moved [[Results]] to [[DamaraResults]] wikitext text/x-wiki #REDIRECT [[DamaraResults]] 7d1965c1d7fc4a397d157d7e14c509f215b1b519 File:Mimosa.bsd.txt 6 350 1578 2011-05-12T11:57:41Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 FOCAL - Forward Calorimeter 0 317 1579 1559 2011-05-12T11:59:09Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]] == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 3e5322a4adf6bca806cf094dbc7cc45d81f603a1 1589 1579 2011-05-12T13:05:22Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 d0a83b02dc7a35f327dc537e4092d3d0fef9af95 1590 1589 2011-05-12T13:05:57Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 21f4d0fb7c501ee89266813bf8bd069c52102adb 1591 1590 2011-05-12T13:23:19Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 d90286d8df361749658e41138d39ae1ed6548460 1594 1591 2011-06-15T09:27:14Z Lbr088 56 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ [[Setting_Up_PetaLinux_System]] Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 [[Category:Mikroelektronikk]] 0681f631cd8ede8e708ded6834c15d05d73e2cad 1595 1594 2011-06-15T09:28:15Z Lbr088 56 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ [[Setting Up PetaLinux System]] Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] == Download section == #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 [[Category:Mikroelektronikk]] b96d06caab267a9408d8d7005e4265a5ed9f8604 File:Pattern test.svf.txt 6 351 1580 2011-05-12T12:16:56Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 1592 1580 2011-05-13T16:28:11Z Sya081 50 uploaded a new version of "[[File:Pattern test.svf.txt]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 1593 1592 2011-05-13T16:32:34Z Sya081 50 uploaded a new version of "[[File:Pattern test.svf.txt]]" wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:U1.ucf.txt 6 352 1581 2011-05-12T12:34:18Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:U2.ucf.txt 6 353 1582 2011-05-12T12:46:50Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:U2.vhdl.txt 6 354 1583 2011-05-12T12:50:39Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:U1.vhdl.txt 6 355 1584 2011-05-12T12:50:50Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:ML605.ucf.txt 6 356 1585 2011-05-12T12:54:25Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Svf specification.pdf 6 357 1586 2011-05-12T12:58:38Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Svf xilinx.pdf 6 358 1587 2011-05-12T12:58:52Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Focal readout.pdf 6 359 1588 2011-05-12T13:04:17Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Setting Up PetaLinux System 0 360 1596 2011-06-22T12:52:01Z Nfyku 4 Created page with '* [[Base_System_Petalinux]] * [[XMD]] * [[Usb-driver]] * [[Troubleshoot]] * [[Webserver]] * [[CGI]] * [[JTAG]]' wikitext text/x-wiki * [[Base_System_Petalinux]] * [[XMD]] * [[Usb-driver]] * [[Troubleshoot]] * [[Webserver]] * [[CGI]] * [[JTAG]] 1b923aec87e5f43cb5a5159e362817f0731b251b 1603 1596 2011-06-22T13:02:11Z Nfyku 4 wikitext text/x-wiki * [[Base_System_Petalinux]] * [[XMD]] * [[Usb-driver]] * [[Troubleshoot]] * [[Webserver]] * [[JTAG]] [[Category:Embedded]] 806467fbefa8baf2cdbd778a53909f1b9908bc5e Base System Petalinux 0 361 1597 2011-06-22T12:52:20Z Nfyku 4 Created page with '== Create PetaLinux Platform == <pre> $ petalinux-new-platform -c <cpu-arch> -v <VENDOR> -p <PLATFORM> </pre> * -c <cpu type> As of PetaLinux 1.3, supported CPU types are 'microb…' wikitext text/x-wiki == Create PetaLinux Platform == <pre> $ petalinux-new-platform -c <cpu-arch> -v <VENDOR> -p <PLATFORM> </pre> * -c <cpu type> As of PetaLinux 1.3, supported CPU types are 'microblaze' and 'ppc440'. * -v <VENDOR> This is the vendor name – often you will use your company's name * -p <PLATFORM> The name of the platform or product you are building. The configuration files of the software platform are created in the directory ''$PETALINUX/software/petalinux-dist/vendors/<VENDOR>/<PLATFORM>.'' The new platform is automatically selected when running the petalinux-new-platform command, so there is no need to launch the toplevel configuration menu, and select the new platform. == Configure Software Platform == Generate the hardware configuration files and copy the configuration files to the right place in PetaLinux. <pre> $ cd /opt/petalinux-v1.3-final-full/hardware/user-platforms/YourProject $ petalinux-copy-autoconfig </pre> Launch the Linux kernel configuration menu and do some configuration if needed. <pre> $ petalinux-config-kernel </pre> Launch the user applications and system settings configuration menu. <pre> $ petalinux-config-apps </pre> == Build PetaLinux == This step take some time <pre> $ cd $PETALINUX/software/petalinux-dist $ make </pre> The compilation log stores in ''build.log'' file in the ''petalinux-dist/'' directory. == Run On Board == Run XMD by typing ''xmd'' in the terminal. Downlad the hardware bitstream to the fpga and connect to the board. <pre> XMD% fpga -f /opt/petalinux-v1.3-final-full/hardware/user-platforms/YourProject/implementation/download.bit XMD% connect mb mdm -debugdevice devicenr # </pre> Check the value of ''Instruction Cache Base Address'', i.e.: * Instruction Cache Base Address.....0xb0000000 Download PetaLinux binary image to board at the instruction cache base address, set program counter to that location and tell the board to start/continue. <pre> XMD% dow -data /opt/petalinux-v1.3-final-full/software/petalinux-dist/images/linux.bin 0xb0000000 XMD% rwr pc 0xb0000000 XMD% con </pre> Connect to UART with settings 115200 8-N-1. Log in as "root" with password "root". Have fun! == Digilent Atlys == When using XMD on the Atlys, it is necessary to provide extra statements to communicate with the hardware: -cable type xilinx_plugin modulename digilent_plugin i.e. fpga -f download.bit -cable type xilinx_plugin modulename digilent_plugin connect mb mdm -cable type xilinx_plugin modulename digilent_plugin From here you just do as usual, i.e. dow -data linux.bin 0xb0000000 <...> == ISE DS Version 13.1 == === Ethernet MAC Address === The MAC address is randomized by default. Use the PetaLinux System Configuration Menu to specify the new MAC address. $ petalinux-config-apps System Settings ---> Network Addresses Untick "Randomise MAC address" and enter appropriate MAC address in the next field. Exit and save. Rebuild U-boot and the images within PetaLinux: [petalinux/software/petalinux-dist]$ make u-boot image New in platform configuration $ petalinux-platform-config --update [http://www.petalogix.com/resources/documentation/petalinux/userguide/Bootloaders/UBoot/UBMacStorage PetaLinux User Guide - Updating Ethernet MAC Address] [[Category:PROVA60]] c01bdf17a759bbe63c4340c6cf2e1045606bb45c 1604 1597 2011-06-22T13:03:02Z Nfyku 4 wikitext text/x-wiki == Create PetaLinux Platform == <pre> $ petalinux-new-platform -c <cpu-arch> -v <VENDOR> -p <PLATFORM> </pre> * -c <cpu type> As of PetaLinux 1.3, supported CPU types are 'microblaze' and 'ppc440'. * -v <VENDOR> This is the vendor name – often you will use your company's name * -p <PLATFORM> The name of the platform or product you are building. The configuration files of the software platform are created in the directory ''$PETALINUX/software/petalinux-dist/vendors/<VENDOR>/<PLATFORM>.'' The new platform is automatically selected when running the petalinux-new-platform command, so there is no need to launch the toplevel configuration menu, and select the new platform. == Configure Software Platform == Generate the hardware configuration files and copy the configuration files to the right place in PetaLinux. <pre> $ cd /opt/petalinux-v1.3-final-full/hardware/user-platforms/YourProject $ petalinux-copy-autoconfig </pre> Launch the Linux kernel configuration menu and do some configuration if needed. <pre> $ petalinux-config-kernel </pre> Launch the user applications and system settings configuration menu. <pre> $ petalinux-config-apps </pre> == Build PetaLinux == This step take some time <pre> $ cd $PETALINUX/software/petalinux-dist $ make </pre> The compilation log stores in ''build.log'' file in the ''petalinux-dist/'' directory. == Run On Board == Run XMD by typing ''xmd'' in the terminal. Downlad the hardware bitstream to the fpga and connect to the board. <pre> XMD% fpga -f /opt/petalinux-v1.3-final-full/hardware/user-platforms/YourProject/implementation/download.bit XMD% connect mb mdm -debugdevice devicenr # </pre> Check the value of ''Instruction Cache Base Address'', i.e.: * Instruction Cache Base Address.....0xb0000000 Download PetaLinux binary image to board at the instruction cache base address, set program counter to that location and tell the board to start/continue. <pre> XMD% dow -data /opt/petalinux-v1.3-final-full/software/petalinux-dist/images/linux.bin 0xb0000000 XMD% rwr pc 0xb0000000 XMD% con </pre> Connect to UART with settings 115200 8-N-1. Log in as "root" with password "root". Have fun! == Digilent Atlys == When using XMD on the Atlys, it is necessary to provide extra statements to communicate with the hardware: -cable type xilinx_plugin modulename digilent_plugin i.e. fpga -f download.bit -cable type xilinx_plugin modulename digilent_plugin connect mb mdm -cable type xilinx_plugin modulename digilent_plugin From here you just do as usual, i.e. dow -data linux.bin 0xb0000000 <...> == ISE DS Version 13.1 == === Ethernet MAC Address === The MAC address is randomized by default. Use the PetaLinux System Configuration Menu to specify the new MAC address. $ petalinux-config-apps System Settings ---> Network Addresses Untick "Randomise MAC address" and enter appropriate MAC address in the next field. Exit and save. Rebuild U-boot and the images within PetaLinux: [petalinux/software/petalinux-dist]$ make u-boot image New in platform configuration $ petalinux-platform-config --update [http://www.petalogix.com/resources/documentation/petalinux/userguide/Bootloaders/UBoot/UBMacStorage PetaLinux User Guide - Updating Ethernet MAC Address] [[Category:Embedded]] d544fbe6550c9a6c64dd24636fe5cf5b5dcb4669 XMD 0 362 1598 2011-06-22T12:53:41Z Nfyku 4 Created page with 'Embedded Systems Tools Reference Manual XMD user commands at p. 147 through p. 152 terminal -- Communicate with mdm UART through JTAG. - see p. 151 for details. verbose -- T…' wikitext text/x-wiki Embedded Systems Tools Reference Manual XMD user commands at p. 147 through p. 152 terminal -- Communicate with mdm UART through JTAG. - see p. 151 for details. verbose -- Turns verbose mode on/off, in verbose mode xmd prints debug information. [[Category:Embedded Linux]] 9409eff001be925d50e9dbdc9d8a9d29558de99e 1605 1598 2011-06-22T13:04:49Z Nfyku 4 wikitext text/x-wiki Embedded Systems Tools Reference Manual XMD user commands at p. 147 through p. 152 terminal -- Communicate with mdm UART through JTAG. - see p. 151 for details. verbose -- Turns verbose mode on/off, in verbose mode xmd prints debug information. [[Category:Embedded]] 99b63a5ef0a6f3e14f505ca5b6b3908a9edbff3b Usb-driver 0 363 1599 2011-06-22T12:54:07Z Nfyku 4 Created page with '==Making the driver work== Download and extract [http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=snapshot;h=HEAD;sf=tgz libusb-driver]. <pre> $ cd /path/to/driver/ $ m…' wikitext text/x-wiki ==Making the driver work== Download and extract [http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=snapshot;h=HEAD;sf=tgz libusb-driver]. <pre> $ cd /path/to/driver/ $ make $ LD_PRELOAD=/path/to/driver/libusb-driver.so </pre> Pull out the usb cable and put it back in. <pre> $ /sbin/lsusb </pre> Make sure the cable has got the ID 03fd:0008, if not - consult [http://git.zerfleddert.de/cgi-bin/gitweb.cgi/usb-driver?a=blob_plain;f=README;hb=HEAD README]. ==Other== Make sure you have ran <pre> $ source /opt/Xilinx/12.3/ISE_DS/settings32.sh </pre> ==Sources== [http://rmdir.de/~michael/xilinx/ 1] [http://www.linuxquestions.org/questions/puppy-71/need-kernel-headers-to-install-fxload-no-linux-directory-741332/ 2] [http://forums.xilinx.com/t5/Installation-and-Licensing/How-to-install-Xilinx-ISE-and-USB-drivers-CentOS-5/td-p/54250/page/2 3] [http://www.spinics.net/lists/hotplug/msg03356.html 4] [http://www.xilinx.com/support/answers/29310.htm 5] [http://archive.itee.uq.edu.au/~listarch/microblaze-uclinux/archive/2007/03/msg00101.html 6] [[Category:Embedded]] d530825d5d9c52ca6c7a813b847d9bf852780387 Troubleshoot 0 364 1600 2011-06-22T12:54:28Z Nfyku 4 Created page with '== General compiling == the error 'line 1: syntax error: unexpected "("' usually means that I have tried to make a custom user application on 'raven' from its directory, and sinc…' wikitext text/x-wiki == General compiling == the error 'line 1: syntax error: unexpected "("' usually means that I have tried to make a custom user application on 'raven' from its directory, and since the Makefile inherits some stuff from petalinux Makefile, it gets built for x86 and not microblaze. == Bus Functional Models == Copied bfm files to EDK directory, then ran the following [localhost] /opt/Xilinx/12.3/ISE_DS > xilbfc -check xilbfc: error while loading shared libraries: libPortability.so: cannot open shared object file: No such file or directory Did some hacks: [localhost] /opt/Xilinx/12.3/ISE_DS > export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$XILINX/lib/lin [localhost] /opt/Xilinx/12.3/ISE_DS > xilbfc ERROR:EDK - Unable to open the log file "xilbfc.log" Try to sudo xilbfc -check gives the same library error as before, might be something wrong with the install? [[Category:Embedded]] 3b9929c674c1033493e35c081a8df4fa41ea18e6 Webserver 0 365 1601 2011-06-22T12:58:16Z Nfyku 4 Created page with '== CGI scripts == $ cd /opt/petalinux-v1.3-final-full/software/petalinux-dist $ petalinux-config-apps Scroll to PetaLogix Demo Applications and enter. Uncheck uWeb and exit. Sc…' wikitext text/x-wiki == CGI scripts == $ cd /opt/petalinux-v1.3-final-full/software/petalinux-dist $ petalinux-config-apps Scroll to PetaLogix Demo Applications and enter. Uncheck uWeb and exit. Scroll to BusyBox->Networking Utilities and make sure httpd is checked. Exit and make the Petalinux image. The server files is now located in '/home/httpd'. CGI scripts should go in cgi-bin directory and chmoded to +x. [http://www.tidsreise.com/filer/simple-webinterface.zip Here] is a simple script used to read and write to memory using 'devmem'. == Interface == [http://cssbeauty.com/skillshare/discussion/3304/styled-checkbox-cross-browser-solution/] == Troubleshooting == First I tried to modify the default page source files (i.e. petalinux.page) but found out that the whole page is some binary, so the [http://www.workware.net.au/Workware/uWeb.html uWeb] API is needed. Then I set out to install php. * Attempt 1 Follow [http://www.menie.org/georges/uClinux/boa-php.html the guide] by Georges Ménie (excluding boa). I downloaded [http://museum.php.net/php4/php-4.3.10.tar.gz php-4.3.10] and applied Georges' patch. Did not compile, so I did some desperate fiddling and came to short. * Attempt 2 **Downloaded the latest [http://www.php.net/get/php-5.3.6.tar.gz/from/a/mirror php-5.3.6]. **Extracted to '/opt/petalinux-v1.3-final-full/software/petalinux-dist/user' to a folder 'php'. **Edit /opt/petalinux-v1.3-final-full/software/petalinux-dist/user/Makefile: dir_$(CONFIG_USER_PHP_PHP) += php **Edit /opt/petalinux-v1.3-final-full/software/petalinux-dist/config/Kconfig config USER_PHP_PHP bool "php" help Testing php support This adds the php application to the petalinux-config-apps ui where we can select it to be compiled to the petalinux image. **Enter php directory in user catalog ./configure --disable-all **Edit /opt/petalinux-v1.3-final-full/software/petalinux-dist/user/php/Makefile CC = /opt/petalinux-v1.3-final-full/tools/linux-i386/microblaze-unknown-linux-gnu/microblaze-unknown-linux-gnu/bin/gcc When compiling the petalinux image, I get no errors in the compile step of php, but get a romfs error during the install step. I believe it has something to do with the large filesize of the php binary or some problem with the Makefile. == References == #[https://docs.blackfin.uclinux.org/doku.php?id=adding_user_applications uClinux - Adding user applications] #[http://www.menie.org/georges/uClinux/boa-php.html BOA + PHP for uClinux] #[http://oldwiki.openwrt.org/OpenWrtDocs(2f)httpd_CGI_scripts.html CGI html form example 1] #[http://www.jmarshall.com/easy/cgi/cgi_footnotes.html#security CGI security, to be read] #[http://www.ooblick.com/text/sh/ Bourne shell reference] #[http://foxlx.acmesystems.it/?id=165 Les] [[Category:Embedded]] b8bc6eda507551500b149368c5f86fc77fbf9ece JTAG 0 366 1602 2011-06-22T12:59:54Z Nfyku 4 Created page with '== notes == Sysfs exports information about devices and drivers from the kernel device model to userspace. Gpio-sysfs is the prefered method for accessing gpio from userspace. It…' wikitext text/x-wiki == notes == Sysfs exports information about devices and drivers from the kernel device model to userspace. Gpio-sysfs is the prefered method for accessing gpio from userspace. It deals with one pin at a time and works in means of reading and writing to files for control. The control files for each gpio chip is contained within '/sys/class/gpio/' ~ # ls /sys/class/gpio/ export gpiochip231 gpiochip235 gpiochip240 gpiochip248 unexport To begin with there is only two files 'export' and 'unexport' and a folder for each gpio, each gpio has an ID number. In each folder there are files that contains information about the chip: ~ # ls /sys/class/gpio/gpiochip231/ base label ngpio subsystem uevent *'base' contains the ID of the chip, i.e. for gpiochip231, the ID is 231 ~ # cat /sys/class/gpio/gpiochip231/base 231 *'label' contains the address (so that you are able to identify which gpio you are dealing with) ~ # cat /sys/class/gpio/gpiochip231/label /plb@0/gpio@81400000 *'ngpio' contains the number of gpio pins available In order to get access to a GPIO pin it is necessary to export it using the export file: echo NN > /sys/class/gpio/export Where NN is the base of the GPIO chip plus the pin number, i.e. for pin0 of gpiochip231 NN=231, for pin1 NN=232, etc. An example: echo 231 > /sys/class/gpio/export echo 232 > /sys/class/gpio/export This gives access to pin0 and pin1. When a pin is exported, a folder is created: '/sys/class/gpio/gpioNN'. Within such a folder you have the control files for the pin, 'direction' and 'value' ~ # ls /sys/class/gpio/gpio231/ direction subsystem uevent value Example, setting direction of pin0 as output: echo out > /sys/class/gpio/gpio231/direction Possible commands for direction: high Set GPIO to an output with a starting value of 1 low Set GPIO to an output with a starting value of 0 out Same as low in Set GPIO to an input Example, setting value of a pin0 to 1, then reading the value: echo 1 > /sys/class/gpio/gpio231/value cat /sys/class/gpio/gpio231/value 1 Current design: sig phys NN TDI -> pin6 -> 231 TMS -> pin4 -> 232 TDO -> pin3 -> 233 TCK -> pin1 -> 234 == References == *[http://www.labbookpages.co.uk/electronics/avrs/toolChain.html AVR Hex to SVF] *[http://dangerousprototypes.com/tag/xsvf-player/ XSVF stuff to look in to] *[http://dangerousprototypes.com/docs/Bus_Pirate Bus pirate] *[http://code.google.com/p/the-bus-pirate/updates/list some bus pirate files] *[http://code.google.com/p/the-bus-pirate/downloads/detail?name=BPv3.XSVFplayer.v1.1.zip Bus pirate xvsf player stuff] *[http://www2.embedded-projects.net/index.php?page_id=221 Even some more about xsvf] *[http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=57510&highlight=spi+ngw100] *[https://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:drivers:simple-gpio] *[http://www.avrfreaks.net/wiki/index.php/Documentation:Linux/GPIO] *[http://xilinx.eefocus.com/wall/index.php?act=read&id=1605] *[http://hackaday.com/2008/12/01/bus-pirate-firmware-update-v0c-jtag-and-more/] *[http://www.avrfreaks.net/wiki/index.php/Documentation:NGW/Newbie/Detailed_IO_Tutorial] [[Category:Embedded]] ec02645b4edba1607422d2417c0df7cc46e2ef23 File:UDMOverview2.pdf 6 367 1607 2011-06-27T12:19:38Z Jli051 54 Talk given at Fysikermøtet 2011, University of Oslo wikitext text/x-wiki Talk given at Fysikermøtet 2011, University of Oslo 57a38c366e006c13622845ab54fa5a9274c1e2a9 Busy Box and related 0 3 1609 1334 2011-08-12T12:43:30Z Nfyku 4 Updated to firmware version 57 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behavior of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] eb224b2bbe4079bb070b8c3104f7eeb651c687c2 1611 1609 2011-08-15T08:34:45Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[http://folk.uib.no/st09909/HIB_selectMAP_rapport/Sluttrapport/SelectMAP_Kernel_Module_-_Sluttrapport.pdf SelectMAP driver (Report be HIB students, in norwegian)] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 42a414e1cb7fe56f095eb767d253faa5b400f9c2 1613 1611 2011-08-16T06:59:38Z Nfyku 4 Lastet opp HiB-rapport til wikihost wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] c2faf1b201c9058c5e8e904e691cd64d4e45ddec 1614 1613 2011-08-16T07:03:40Z Nfyku 4 Lastet opp HiB-rapport til wikihost wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[File:SelectMAP_Kernel_Module|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 67a809a1e25a5d905e8d47b1681d59e5f1046948 Busy Box and related/BusyBox Registers 0 242 1610 1266 2011-08-12T12:56:41Z Nfyku 4 Changed from L0 to L1A trigger timeout wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L1 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L1A trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L1 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Enable RoI decoding. Default=0 |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x13 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not Used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3014 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3015 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3050 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3052 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3053 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} f40bfc5d0445b69bec444085a996d2b3e362342c Detector lab 0 21 1612 1534 2011-08-15T12:12:24Z Zzh026 61 wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Zhou * Postdoctors: Trygve * Researcher: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332 (55588306) * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 02.05. - 06.05.11: IRTG medical physics, Bergen * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. 14252aaeedf891f44f3bb039627986481d6e3287 1615 1612 2011-08-18T06:45:58Z Dfe002 7 /* Meetings and conferences */ wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Njål, Stian, Kristian, Eivind, Arild, Zhou * Postdoctors: Trygve * Researcher: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: [http://www.uib.no/personer/Dominik.Fehlker Dominik], Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332 (55588306) * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. c1218951dfa619782afbcda5f55b033d5b8275da Wishlist 0 196 1616 1226 2011-08-18T06:47:14Z Dfe002 7 wikitext text/x-wiki Here you can put the equipment, components, stuff that you will need for your project. During the meetings we can then compile the priorities from the list and see where we find money for it. ==XYZ-table setup== b66aa237d641a3f5c0ed9f8fe4a542b4c83d1e02 Lab Equipment 0 111 1617 1394 2011-08-18T06:55:59Z Dfe002 7 added xy stages wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Number !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |2 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |1 |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |1 |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |4 |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |2 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |1 |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |1 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, 5 Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf Users manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} = XY stages = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manual !Software !default values |- |2 x Zaber T-LSM200B |Motorized Stage, 200 mm travel, RS-232 plus manual control |[http://www.zaber.com/wiki/Manuals/T-LSM wiki], [http://www.zaber.com/documents/T-LSM-manual.pdf pdf] |[http://www.zaber.com/wiki/Software software] |[http://www.zaber.com/support/?tab=Device%20ids#tabs def. val.] |} 1c61ca5f563d9c71d8b3e834d590021ac7fff31b Lab Equipment 0 111 1618 1617 2011-08-18T07:01:10Z Dfe002 7 /* NIM devices */ added Caen HV PSU wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Number !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |2 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |1 |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |1 |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |4 |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |2 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |1 |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |1 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, 5 Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] |CERN |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf manual] | |- |Caen N1471A |2 Ch programmable High Voltage PSU, 5.5 kV / 300 µA |[http://www.caen.it/servlet/checkCaenManualFile?Id=7746 manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} = XY stages = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manual !Software !default values |- |2 x Zaber T-LSM200B |Motorized Stage, 200 mm travel, RS-232 plus manual control |[http://www.zaber.com/wiki/Manuals/T-LSM wiki], [http://www.zaber.com/documents/T-LSM-manual.pdf pdf] |[http://www.zaber.com/wiki/Software software] |[http://www.zaber.com/support/?tab=Device%20ids#tabs def. val.] |} 94d27ad7ab1bd456f31c5724e6f6a8319a3200f8 1619 1618 2011-08-18T07:01:28Z Dfe002 7 /* VME devices */ wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Number !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |2 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |1 |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |1 |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |4 |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |2 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |1 |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |1 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, 5 Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] | |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf manual] | |- |Caen N1471A |2 Ch programmable High Voltage PSU, 5.5 kV / 300 µA |[http://www.caen.it/servlet/checkCaenManualFile?Id=7746 manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} = XY stages = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manual !Software !default values |- |2 x Zaber T-LSM200B |Motorized Stage, 200 mm travel, RS-232 plus manual control |[http://www.zaber.com/wiki/Manuals/T-LSM wiki], [http://www.zaber.com/documents/T-LSM-manual.pdf pdf] |[http://www.zaber.com/wiki/Software software] |[http://www.zaber.com/support/?tab=Device%20ids#tabs def. val.] |} cbc6d9b5ef5e8f14ce6357cb25c929b3928ef82a PHYS321 0 278 1620 1185 2011-08-23T14:37:27Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] bff63f310d3778bde97acb992c7cef319b5332f4 PHYS222 0 202 1621 1297 2011-08-29T12:25:22Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [[http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective]] * [[http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition]] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [[http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere]] * [[http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets]] * [[http://www.semi1source.com/glossary/ Semiconductor Glossary ] === Prosessteknologi === [[http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbors]] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [[http://www.aimspice.com/download.html Download a free student version]] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [[http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV]] [[Category:Mikroelektronikk]] c3b6a1f0f639b14d92929734d62d4286247b23ed 1622 1621 2011-08-29T12:26:27Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Artikler === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] ffc82af6642cfa64a27b636cdc52d47580a42fb7 1623 1622 2011-08-29T12:37:39Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[File:p-n_junctions.pdf]] === Prosessteknologi === [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 9cbcf47be8fdc498deeb8a4f505bfaeae9df4d7d 1625 1623 2011-08-29T12:39:53Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[File:p-n_junctions.pdf Elementary Physics of P-N Junctions]] === Prosessteknologi === [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 8baa595a8d78d4f971341144d84f69a7400c7f2b 1626 1625 2011-08-29T12:49:53Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf|Elementary Physics of P-N Junctions]] === Prosessteknologi === [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 8becec0973e2dcfb983832f35be1a4def7808c56 1632 1626 2011-09-21T09:15:55Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf|Elementary Physics of P-N Junctions]] === Prosessteknologi === [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 95208a01dcb147b50870bbe9d65cafa2ce53b85f 1663 1632 2011-09-26T08:13:44Z Nfyku 4 Added link to "The Asymptotic Bode Diagram: Derivation of Approximations" wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf|Elementary Physics of P-N Junctions]] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html|The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 5dbe884b90f2a71ef412e114235eee17cf8e3bcf File:P-n junctions.pdf 6 368 1624 2011-08-29T12:39:01Z Nfyku 4 Elementary Physics of P-N Junctions wikitext text/x-wiki Elementary Physics of P-N Junctions 9af1dae57d7cc2e7590678c411ba3d3234473d48 Busy Box and related 0 3 1627 1614 2011-08-30T08:54:15Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] fdcc64154a0a9aae3c7b55127d1153cc2fe86521 File:SelectMAP Kernel Module.pdf 6 369 1628 2011-08-30T08:54:27Z Nfyku 4 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Main Page 0 1 1629 1457 2011-09-21T09:09:44Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] * [[DAMARA]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 2179b4e43f98488512b694a4fcf80114f2be5952 1630 1629 2011-09-21T09:09:58Z Nfyku 4 wikitext text/x-wiki <big>'''Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] * [[DAMARA]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 07b0abd4535ab46f21406791beee90f453cfdb78 Eksperimentalfysikk med prosjektoppgave - PHYS117 0 370 1631 2011-09-21T09:11:32Z Nfyku 4 Created page with '[[Applied Planetary Radio Astronomy]]' wikitext text/x-wiki [[Applied Planetary Radio Astronomy]] 42df9bd75d5f9e2c1bc6f3bab35209b15e5ca735 1634 1631 2011-09-21T20:32:04Z Gge002 52 wikitext text/x-wiki [[Applied Radio Astronomy]] 2adce9c2ca41d34374896db266b4992770ec2443 1635 1634 2011-09-21T20:32:22Z Gge002 52 wikitext text/x-wiki [[Applied Planetary Radio Astronomy]] 42df9bd75d5f9e2c1bc6f3bab35209b15e5ca735 1667 1635 2011-09-28T06:32:55Z Nfyku 4 wikitext text/x-wiki * [[Applied Planetary Radio Astronomy]] * [[Phys117_-_PET_project|PET detector]] 503984dcce1ac5ef498ccbfe42b55e57748a6811 Applied Planetary Radio Astronomy 0 371 1633 2011-09-21T20:27:48Z Gge002 52 Created page with '= Jovian Radio Storms = == Project Outline == == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation' wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation 68b01dd86fd724104ffee2028329a52ed46dd3f4 1636 1633 2011-09-21T21:05:20Z Gge002 52 some initial hypothethic chaptering wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennas - Construction and Theory = 7f29523adf4c0e9ab6d653df437b13eb14adf236 1638 1636 2011-09-21T21:18:48Z Gge002 52 wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennas - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] 6dd4dedb35d4fe8a1d5b4e6ad10cc17c8a9cd227 1639 1638 2011-09-22T06:33:18Z Gge002 52 added project outline wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == The project is suitable for 1-2 practically oriented students with broad interests, who do not mind “getting their hands dirty” every now and then, in addition to the time spent in front of the PC. #Contact persons – Georgi Genov, Kjetil Ullaland, Nikolai Østgaard, Kjell Aarsnes #Aim To learn basic radio astronomy, to modify an existing radio telescope amplifier (RTA), to build the telescope’s antennas and to establish observational procedures. #Tasks #*Modifying the existing RTA for automatic sweep of the frequency range; #*Building the electronics required to establish the computer communication; #*Building and set up of the antennas of the radio telescope; #*Developing a simple software for data acquisition and preliminary data analysis; #*Performing tests and developing observational procedures. #Benefits – learn basic radio astronomy; get hands-on experience with applied electronics, data acquisition and data analysis, development of software for scientific purposes. #Background Two types of radio noise emitted by Jupiter have been detected – synchrotron and cyclotron. The latter is strong enough to be detected by small antennas on Earth’s surface. Charged particles spiraling around Jupiter’s magnetic field lines near both magnetic poles (top figure) produce this cyclotron radiation. These shortwave signals are often referred to as DAM, since they fall in the decameter wavelength range. At these higher latitudes, where Jupiter’s magnetic field reaches as far out as Io, its field lines sweep rapidly past the ions and electrons shed into Io’s torus. This induces DAM radiation along the surface of the cyclotron cone (given in magenta in the middle figure). Jupiter’s DAM frequency reaches a maximum of 39.5 MHz near Jupiter’s cloud tops. At twice Jupiter’s radius the frequency is 3 MHz. Intermediate frequencies are created between these two extreme distances. Jupiter radiates two distinctive types of radio signatures in the DAM frequency range: *L-bursts –long duration static sounding like the swoosh of the waves; *S-bursts – short duration static resembling the crackling of a campfire. DAM radiation originates from at least 3 sources (A, B and C) that are fixed with respect to the planet’s rotating magnetic field. These sources are observed at around 20 MHz. They fall largely around one hemisphere (bottom figure). Source A is more than twice more likely to emit than either B or C. Jupiter’s magnetic storms depend on a combination of Io’s orbital position and the inclination of the respective radio source with respect to Earth. == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennas - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] 72f14db32d9339e5542147c5f7009c0b2232ddd4 1643 1639 2011-09-22T06:47:49Z Gge002 52 added pics to project outline wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == [[File:Jupiter1.jpg|thumb|alt=Charged partical trajectory in Jupiter's magnetic field|Charged partical trajectory in Jupiter's magnetic field]] [[File:Jupiter2.jpg|thumb|alt=Origin of the different frequency emissions in Jupiter's magnetic field|Origin of the different frequency emissions in Jupiter's magnetic field]] [[File:Jupiter3.jpg|thumb|alt=Jupiter's A-, B- and C type radio burst|Jupiter's A-, B- and C type radio burst]] The project is suitable for 1-2 practically oriented students with broad interests, who do not mind “getting their hands dirty” every now and then, in addition to the time spent in front of the PC. #Contact persons – Georgi Genov, Kjetil Ullaland, Nikolai Østgaard, Kjell Aarsnes #Aim To learn basic radio astronomy, to modify an existing radio telescope amplifier (RTA), to build the telescope’s antennas and to establish observational procedures. #Tasks #*Modifying the existing RTA for automatic sweep of the frequency range; #*Building the electronics required to establish the computer communication; #*Building and set up of the antennas of the radio telescope; #*Developing a simple software for data acquisition and preliminary data analysis; #*Performing tests and developing observational procedures. #Benefits – learn basic radio astronomy; get hands-on experience with applied electronics, data acquisition and data analysis, development of software for scientific purposes. #Background Two types of radio noise emitted by Jupiter have been detected – synchrotron and cyclotron. The latter is strong enough to be detected by small antennas on Earth’s surface. Charged particles spiraling around Jupiter’s magnetic field lines near both magnetic poles (top figure) produce this cyclotron radiation. These shortwave signals are often referred to as DAM, since they fall in the decameter wavelength range. At these higher latitudes, where Jupiter’s magnetic field reaches as far out as Io, its field lines sweep rapidly past the ions and electrons shed into Io’s torus. This induces DAM radiation along the surface of the cyclotron cone (given in magenta in the middle figure). Jupiter’s DAM frequency reaches a maximum of 39.5 MHz near Jupiter’s cloud tops. At twice Jupiter’s radius the frequency is 3 MHz. Intermediate frequencies are created between these two extreme distances. Jupiter radiates two distinctive types of radio signatures in the DAM frequency range: *L-bursts –long duration static sounding like the swoosh of the waves; *S-bursts – short duration static resembling the crackling of a campfire. DAM radiation originates from at least 3 sources (A, B and C) that are fixed with respect to the planet’s rotating magnetic field. These sources are observed at around 20 MHz. They fall largely around one hemisphere (bottom figure). Source A is more than twice more likely to emit than either B or C. Jupiter’s magnetic storms depend on a combination of Io’s orbital position and the inclination of the respective radio source with respect to Earth. == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennas - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] 063a1dfdb3dc7925ddab0ddaca14c17d6010bbf4 1644 1643 2011-09-22T06:50:27Z Gge002 52 wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == [[File:Jupiter1.jpg|thumb|alt=Charged partical trajectory in Jupiter's magnetic field|Charged partical trajectory in Jupiter's magnetic field]] [[File:Jupiter2.jpg|thumb|alt=Origin of the different frequency emissions in Jupiter's magnetic field|Origin of the different frequency emissions in Jupiter's magnetic field]] [[File:Jupiter3.jpg|thumb|alt=Jupiter's A-, B- and C type radio burst|Jupiter's A-, B- and C type radio burst]] The project is suitable for 1-2 practically oriented students with broad interests, who do not mind “getting their hands dirty” every now and then, in addition to the time spent in front of the PC. #Contact persons – Georgi Genov, Kjetil Ullaland, Nikolai Østgaard, Kjell Aarsnes #Aim - To learn basic radio astronomy, to modify an existing radio telescope amplifier (RTA), to build the telescope’s antennas and to establish observational procedures. #Tasks #*Modifying the existing RTA for automatic sweep of the frequency range; #*Building the electronics required to establish the computer communication; #*Building and set up of the antennas of the radio telescope; #*Developing a simple software for data acquisition and preliminary data analysis; #*Performing tests and developing observational procedures. #Benefits – learn basic radio astronomy; get hands-on experience with applied electronics, data acquisition and data analysis, development of software for scientific purposes. #Background Two types of radio noise emitted by Jupiter have been detected – synchrotron and cyclotron. The latter is strong enough to be detected by small antennas on Earth’s surface. Charged particles spiraling around Jupiter’s magnetic field lines near both magnetic poles (top figure) produce this cyclotron radiation. These shortwave signals are often referred to as DAM, since they fall in the decameter wavelength range. At these higher latitudes, where Jupiter’s magnetic field reaches as far out as Io, its field lines sweep rapidly past the ions and electrons shed into Io’s torus. This induces DAM radiation along the surface of the cyclotron cone (given in magenta in the middle figure). Jupiter’s DAM frequency reaches a maximum of 39.5 MHz near Jupiter’s cloud tops. At twice Jupiter’s radius the frequency is 3 MHz. Intermediate frequencies are created between these two extreme distances. Jupiter radiates two distinctive types of radio signatures in the DAM frequency range: *L-bursts –long duration static sounding like the swoosh of the waves; *S-bursts – short duration static resembling the crackling of a campfire. DAM radiation originates from at least 3 sources (A, B and C) that are fixed with respect to the planet’s rotating magnetic field. These sources are observed at around 20 MHz. They fall largely around one hemisphere (bottom figure). Source A is more than twice more likely to emit than either B or C. Jupiter’s magnetic storms depend on a combination of Io’s orbital position and the inclination of the respective radio source with respect to Earth. == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennas - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] ec034eeed7d615042fb9302498d494d5b71690c9 1645 1644 2011-09-22T11:44:25Z Gge002 52 wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == [[File:Jupiter1.jpg|thumb|alt=Charged partical trajectory in Jupiter's magnetic field|Charged partical trajectory in Jupiter's magnetic field]] [[File:Jupiter2.jpg|thumb|alt=Origin of the different frequency emissions in Jupiter's magnetic field|Origin of the different frequency emissions in Jupiter's magnetic field]] [[File:Jupiter3.jpg|thumb|alt=Jupiter's A-, B- and C type radio burst|Jupiter's A-, B- and C type radio burst]] The project is suitable for 1-2 practically oriented students with broad interests, who do not mind “getting their hands dirty” every now and then, in addition to the time spent in front of the PC. #Contact persons – Georgi Genov, Kjetil Ullaland, Nikolai Østgaard, Kjell Aarsnes #Aim - To learn basic radio astronomy, to modify an existing radio telescope amplifier (RTA), to build the telescope’s antennas and to establish observational procedures. #Tasks #*Modifying the existing RTA for automatic sweep of the frequency range; #*Building the electronics required to establish the computer communication; #*Building and set up of the antennas of the radio telescope; #*Developing a simple software for data acquisition and preliminary data analysis; #*Performing tests and developing observational procedures. #Benefits – learn basic radio astronomy; get hands-on experience with applied electronics, data acquisition and data analysis, development of software for scientific purposes. #Background Two types of radio noise emitted by Jupiter have been detected – synchrotron and cyclotron. The latter is strong enough to be detected by small antennas on Earth’s surface. Charged particles spiraling around Jupiter’s magnetic field lines near both magnetic poles (top figure) produce this cyclotron radiation. These shortwave signals are often referred to as DAM, since they fall in the decameter wavelength range. At these higher latitudes, where Jupiter’s magnetic field reaches as far out as Io, its field lines sweep rapidly past the ions and electrons shed into Io’s torus. This induces DAM radiation along the surface of the cyclotron cone (given in magenta in the middle figure). Jupiter’s DAM frequency reaches a maximum of 39.5 MHz near Jupiter’s cloud tops. At twice Jupiter’s radius the frequency is 3 MHz. Intermediate frequencies are created between these two extreme distances. Jupiter radiates two distinctive types of radio signatures in the DAM frequency range: *L-bursts –long duration static sounding like the swoosh of the waves; *S-bursts – short duration static resembling the crackling of a campfire. DAM radiation originates from at least 3 sources (A, B and C) that are fixed with respect to the planet’s rotating magnetic field. These sources are observed at around 20 MHz. They fall largely around one hemisphere (bottom figure). Source A is more than twice more likely to emit than either B or C. Jupiter’s magnetic storms depend on a combination of Io’s orbital position and the inclination of the respective radio source with respect to Earth. == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennae - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] = Books = == The Radio Sky and How to Observe It - by Jeff Lashley == [[:File:Ch0.pdf|Preface and Table of contents]] [[:File:Ch1.pdf|Chapter 1 - The Radio Sun]] [[:File:Ch2.pdf|Chapter 2 - Jupiter]] [[:File:Ch3.pdf|Chapter 3 - Meteors and Meteor Streams]] [[:File:Ch4.pdf|Chapter 4 - Beyond the Solar System]] [[:File:Ch5.pdf|Chapter 5 - Antennae]] [[:File:Ch6.pdf|Chapter 6 - Setting Up a Radio Astronomy Station]] [[:File:Ch7.pdf|Chapter 7 - Radio Hardware Theory]] [[:File:Ch8.pdf|Chapter 8 - Introduction to RF Electronics]] [[:File:Ch9.pdf|Chapter 9 - Building a Very Low Frequency Solar Flare Monitor]] [[:File:Ch10.pdf|Chapter 10 - Microwave Radio Telescope Projects]] [[:File:Ch11.pdf|Chapter 11 - Building a Jupiter Radio Telescope]] [[:File:Ch12.pdf|Chapter 12 - Building a Broad Band Solar Radio Telescope]] [[:File:Ch13.pdf|Chapter 13 - Data Logging and Data Processing]] [[:File:AppA.pdf|Appendices - Formulae; Bibliography; Suppliers, Groups, and Societies; Glossary]] = Articles = [[Category:Added The Radio Sky and How to Observe It - by Jeff Lashley]] 854aa1547f817cf05adb1899b027afe5df75942a 1661 1645 2011-09-22T12:02:53Z Gge002 52 Added The Radio Sky and How to Observe It - by Jeff Lashley wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == [[File:Jupiter1.jpg|thumb|alt=Charged partical trajectory in Jupiter's magnetic field|Charged partical trajectory in Jupiter's magnetic field]] [[File:Jupiter2.jpg|thumb|alt=Origin of the different frequency emissions in Jupiter's magnetic field|Origin of the different frequency emissions in Jupiter's magnetic field]] [[File:Jupiter3.jpg|thumb|alt=Jupiter's A-, B- and C type radio burst|Jupiter's A-, B- and C type radio burst]] The project is suitable for 1-2 practically oriented students with broad interests, who do not mind “getting their hands dirty” every now and then, in addition to the time spent in front of the PC. #Contact persons – Georgi Genov, Kjetil Ullaland, Nikolai Østgaard, Kjell Aarsnes #Aim - To learn basic radio astronomy, to modify an existing radio telescope amplifier (RTA), to build the telescope’s antennas and to establish observational procedures. #Tasks #*Modifying the existing RTA for automatic sweep of the frequency range; #*Building the electronics required to establish the computer communication; #*Building and set up of the antennas of the radio telescope; #*Developing a simple software for data acquisition and preliminary data analysis; #*Performing tests and developing observational procedures. #Benefits – learn basic radio astronomy; get hands-on experience with applied electronics, data acquisition and data analysis, development of software for scientific purposes. #Background Two types of radio noise emitted by Jupiter have been detected – synchrotron and cyclotron. The latter is strong enough to be detected by small antennas on Earth’s surface. Charged particles spiraling around Jupiter’s magnetic field lines near both magnetic poles (top figure) produce this cyclotron radiation. These shortwave signals are often referred to as DAM, since they fall in the decameter wavelength range. At these higher latitudes, where Jupiter’s magnetic field reaches as far out as Io, its field lines sweep rapidly past the ions and electrons shed into Io’s torus. This induces DAM radiation along the surface of the cyclotron cone (given in magenta in the middle figure). Jupiter’s DAM frequency reaches a maximum of 39.5 MHz near Jupiter’s cloud tops. At twice Jupiter’s radius the frequency is 3 MHz. Intermediate frequencies are created between these two extreme distances. Jupiter radiates two distinctive types of radio signatures in the DAM frequency range: *L-bursts –long duration static sounding like the swoosh of the waves; *S-bursts – short duration static resembling the crackling of a campfire. DAM radiation originates from at least 3 sources (A, B and C) that are fixed with respect to the planet’s rotating magnetic field. These sources are observed at around 20 MHz. They fall largely around one hemisphere (bottom figure). Source A is more than twice more likely to emit than either B or C. Jupiter’s magnetic storms depend on a combination of Io’s orbital position and the inclination of the respective radio source with respect to Earth. == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennae - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] = Books = == The Radio Sky and How to Observe It - by Jeff Lashley == [[:File:Ch0.pdf|Preface and Table of contents]] [[:File:Ch1.pdf|Chapter 1 - The Radio Sun]] [[:File:Ch2.pdf|Chapter 2 - Jupiter]] [[:File:Ch3.pdf|Chapter 3 - Meteors and Meteor Streams]] [[:File:Ch4.pdf|Chapter 4 - Beyond the Solar System]] [[:File:Ch5.pdf|Chapter 5 - Antennae]] [[:File:Ch6.pdf|Chapter 6 - Setting Up a Radio Astronomy Station]] [[:File:Ch7.pdf|Chapter 7 - Radio Hardware Theory]] [[:File:Ch8.pdf|Chapter 8 - Introduction to RF Electronics]] [[:File:Ch9.pdf|Chapter 9 - Building a Very Low Frequency Solar Flare Monitor]] [[:File:Ch10.pdf|Chapter 10 - Microwave Radio Telescope Projects]] [[:File:Ch11.pdf|Chapter 11 - Building a Jupiter Radio Telescope]] [[:File:Ch12.pdf|Chapter 12 - Building a Broad Band Solar Radio Telescope]] [[:File:Ch13.pdf|Chapter 13 - Data Logging and Data Processing]] [[:File:AppA.pdf|Appendices - Formulae; Bibliography; Suppliers, Groups, and Societies; Glossary]] = Articles = 990611bfe489f8bd8491347cb6c8c837f8186e69 1662 1661 2011-09-22T17:31:21Z Gge002 52 radio freq bands added wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == [[File:Jupiter1.jpg|thumb|alt=Charged partical trajectory in Jupiter's magnetic field|Charged partical trajectory in Jupiter's magnetic field]] [[File:Jupiter2.jpg|thumb|alt=Origin of the different frequency emissions in Jupiter's magnetic field|Origin of the different frequency emissions in Jupiter's magnetic field]] [[File:Jupiter3.jpg|thumb|alt=Jupiter's A-, B- and C type radio burst|Jupiter's A-, B- and C type radio burst]] The project is suitable for 1-2 practically oriented students with broad interests, who do not mind “getting their hands dirty” every now and then, in addition to the time spent in front of the PC. #Contact persons – Georgi Genov, Kjetil Ullaland, Nikolai Østgaard, Kjell Aarsnes #Aim - To learn basic radio astronomy, to modify an existing radio telescope amplifier (RTA), to build the telescope’s antennas and to establish observational procedures. #Tasks #*Modifying the existing RTA for automatic sweep of the frequency range; #*Building the electronics required to establish the computer communication; #*Building and set up of the antennas of the radio telescope; #*Developing a simple software for data acquisition and preliminary data analysis; #*Performing tests and developing observational procedures. #Benefits – learn basic radio astronomy; get hands-on experience with applied electronics, data acquisition and data analysis, development of software for scientific purposes. #Background Two types of radio noise emitted by Jupiter have been detected – synchrotron and cyclotron. The latter is strong enough to be detected by small antennas on Earth’s surface. Charged particles spiraling around Jupiter’s magnetic field lines near both magnetic poles (top figure) produce this cyclotron radiation. These shortwave signals are often referred to as DAM, since they fall in the decameter wavelength range. At these higher latitudes, where Jupiter’s magnetic field reaches as far out as Io, its field lines sweep rapidly past the ions and electrons shed into Io’s torus. This induces DAM radiation along the surface of the cyclotron cone (given in magenta in the middle figure). Jupiter’s DAM frequency reaches a maximum of 39.5 MHz near Jupiter’s cloud tops. At twice Jupiter’s radius the frequency is 3 MHz. Intermediate frequencies are created between these two extreme distances. Jupiter radiates two distinctive types of radio signatures in the DAM frequency range: *L-bursts –long duration static sounding like the swoosh of the waves; *S-bursts – short duration static resembling the crackling of a campfire. DAM radiation originates from at least 3 sources (A, B and C) that are fixed with respect to the planet’s rotating magnetic field. These sources are observed at around 20 MHz. They fall largely around one hemisphere (bottom figure). Source A is more than twice more likely to emit than either B or C. Jupiter’s magnetic storms depend on a combination of Io’s orbital position and the inclination of the respective radio source with respect to Earth. == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennae - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] = Books = == The Radio Sky and How to Observe It - by Jeff Lashley == [[:File:Ch0.pdf|Preface and Table of contents]] [[:File:Ch1.pdf|Chapter 1 - The Radio Sun]] [[:File:Ch2.pdf|Chapter 2 - Jupiter]] [[:File:Ch3.pdf|Chapter 3 - Meteors and Meteor Streams]] [[:File:Ch4.pdf|Chapter 4 - Beyond the Solar System]] [[:File:Ch5.pdf|Chapter 5 - Antennae]] [[:File:Ch6.pdf|Chapter 6 - Setting Up a Radio Astronomy Station]] [[:File:Ch7.pdf|Chapter 7 - Radio Hardware Theory]] [[:File:Ch8.pdf|Chapter 8 - Introduction to RF Electronics]] [[:File:Ch9.pdf|Chapter 9 - Building a Very Low Frequency Solar Flare Monitor]] [[:File:Ch10.pdf|Chapter 10 - Microwave Radio Telescope Projects]] [[:File:Ch11.pdf|Chapter 11 - Building a Jupiter Radio Telescope]] [[:File:Ch12.pdf|Chapter 12 - Building a Broad Band Solar Radio Telescope]] [[:File:Ch13.pdf|Chapter 13 - Data Logging and Data Processing]] [[:File:AppA.pdf|Appendices - Formulae; Bibliography; Suppliers, Groups, and Societies; Glossary]] = Articles = = Miscellaneous = == Radio Frequency Bands == {| class="wikitable", border = '1' |-style="background: silver" ! Band name ! Abbreviation ! Frequency ! Wavelength ! Usage |- | | | < 3 Hz | > 100 000 km | Natural and man-made electromagnetic noise |- | Extremely low frequency | ELF | 3 - 30 Hz | 100 000 - 10 000 km | Submarine communication |- | Super low frequency | SLF | 30 - 300 Hz | 10 000 - 1 000 km | Submarine communication |- | Ultra low frequency | ULF | 300 Hz - 3 kHz | 1 000 - 100 km | Submarine communication, Communication within mines |- | Very low frequency | VLF | 3 - 30 kHz | 100 - 10 km | Navigation, time signals, submarine communication, wireless heart rate monitors, geophysics |- | Low frequency | LF | 30 - 300 kHz | 10 - 1 km | Navigation, time signals, AM longwave broadcasting (Europe and parts of Asia), RFID, amateur radio |- | Medium frequency | MF | 300 kHz - 3 MHz | 1 km - 100 m | AM medium-wave broadcasts, amateur radio, avalanche beacons |- | High frequency | HF | 3 - 30 MHz | 100 m - 10 m | Shortwave broadcasts, citizens' band radio, amateur radio and over-the-horizon aviation communications, RFID, Over-the-horizon radar, Automatic link establishment (ALE) / Near Vertical Incidence Skywave (NVIS) radio communications, Marine and mobile radio telephony |- | Very high frequency | VHF | 30 - 300 MHz | 10 - 1 m | FM, television broadcasts and line-of-sight ground-to-aircraft and aircraft-to-aircraft communications. Land Mobile and Maritime Mobile communications, amateur radio, weather radio |- | Ultra high frequency | UHF | 300 MHz - 3 GHz | 1 m - 100 mm | Television broadcasts, microwave ovens, microwave devices/communications, mobile phones, wireless LAN, Bluetooth, ZigBee, GPS and two-way radios such as Land Mobile, FRS and GMRS radios, amateur radio |- | Super high frequency | SHF | 3 - 30 GHz | 100 - 10 mm | Microwave devices/communications, wireless LAN, most modern radars, communications satellites, satellite television broadcasting, DBS, amateur radio |- | Extremely high frequency | EHF | 30 - 300 GHz | 10 - 1 mm | High-frequency microwave radio relay, microwave remote sensing, amateur radio, directed-energy weapon, millimeter wave scanner |- | Terahertz or Tremendously high frequency | THz or THF | 300 GHz - 3 THz | 1 - 0.1 mm | Terahertz imaging, ultrafast molecular dynamics, condensed-matter physics, terahertz time-domain spectroscopy, terahertz computing/communications, sub-mm remote sensing, amateur radio |} 9f6b88de902d1b30bbe7d36bfc110aa0a4148b02 1668 1662 2011-09-28T08:08:48Z Gge002 52 wikitext text/x-wiki = Jovian Radio Storms = == Project Outline == [[File:Jupiter1.jpg|thumb|alt=Charged partical trajectory in Jupiter's magnetic field|Charged partical trajectory in Jupiter's magnetic field]] [[File:Jupiter2.jpg|thumb|alt=Origin of the different frequency emissions in Jupiter's magnetic field|Origin of the different frequency emissions in Jupiter's magnetic field]] [[File:Jupiter3.jpg|thumb|alt=Jupiter's A-, B- and C type radio burst|Jupiter's A-, B- and C type radio burst]] The project is suitable for 1-2 practically oriented students with broad interests, who do not mind “getting their hands dirty” every now and then, in addition to the time spent in front of the PC. #Contact persons – Georgi Genov, Kjetil Ullaland, Nikolai Østgaard, Kjell Aarsnes #Aim - To learn basic radio astronomy, to modify an existing radio telescope amplifier (RTA), to build the telescope’s antennas and to establish observational procedures. #Tasks #*Modifying the existing RTA for automatic sweep of the frequency range; #*Building the electronics required to establish the computer communication; #*Building and set up of the antennas of the radio telescope; #*Developing a simple software for data acquisition and preliminary data analysis; #*Performing tests and developing observational procedures. #Benefits – learn basic radio astronomy; get hands-on experience with applied electronics, data acquisition and data analysis, development of software for scientific purposes. #Background Two types of radio noise emitted by Jupiter have been detected – synchrotron and cyclotron. The latter is strong enough to be detected by small antennas on Earth’s surface. Charged particles spiraling around Jupiter’s magnetic field lines near both magnetic poles (top figure) produce this cyclotron radiation. These shortwave signals are often referred to as DAM, since they fall in the decameter wavelength range. At these higher latitudes, where Jupiter’s magnetic field reaches as far out as Io, its field lines sweep rapidly past the ions and electrons shed into Io’s torus. This induces DAM radiation along the surface of the cyclotron cone (given in magenta in the middle figure). Jupiter’s DAM frequency reaches a maximum of 39.5 MHz near Jupiter’s cloud tops. At twice Jupiter’s radius the frequency is 3 MHz. Intermediate frequencies are created between these two extreme distances. Jupiter radiates two distinctive types of radio signatures in the DAM frequency range: *L-bursts –long duration static sounding like the swoosh of the waves; *S-bursts – short duration static resembling the crackling of a campfire. DAM radiation originates from at least 3 sources (A, B and C) that are fixed with respect to the planet’s rotating magnetic field. These sources are observed at around 20 MHz. They fall largely around one hemisphere (bottom figure). Source A is more than twice more likely to emit than either B or C. Jupiter’s magnetic storms depend on a combination of Io’s orbital position and the inclination of the respective radio source with respect to Earth. == Original Radio JOVE Project == # JOVE Receiver Documentation # JOVE Antenna Documentation = Receivers - Construction and Theory = = Antennae - Construction and Theory = * [[:File:ParaboloidConcentrator.pdf|How to build a parabolic concentrator]] = Books = == The Radio Sky and How to Observe It - by Jeff Lashley == Preface and Table of contents Chapter 1 - The Radio Sun Chapter 2 - Jupiter Chapter 3 - Meteors and Meteor Streams Chapter 4 - Beyond the Solar System Chapter 5 - Antennae Chapter 6 - Setting Up a Radio Astronomy Station Chapter 7 - Radio Hardware Theory Chapter 8 - Introduction to RF Electronics Chapter 9 - Building a Very Low Frequency Solar Flare Monitor Chapter 10 - Microwave Radio Telescope Projects Chapter 11 - Building a Jupiter Radio Telescope Chapter 12 - Building a Broad Band Solar Radio Telescope Chapter 13 - Data Logging and Data Processing Appendices - Formulae; Bibliography; Suppliers, Groups, and Societies; Glossary = Articles = = Miscellaneous = == Radio Frequency Bands == {| class="wikitable", border = '1' |-style="background: silver" ! Band name ! Abbreviation ! Frequency ! Wavelength ! Usage |- | | | < 3 Hz | > 100 000 km | Natural and man-made electromagnetic noise |- | Extremely low frequency | ELF | 3 - 30 Hz | 100 000 - 10 000 km | Submarine communication |- | Super low frequency | SLF | 30 - 300 Hz | 10 000 - 1 000 km | Submarine communication |- | Ultra low frequency | ULF | 300 Hz - 3 kHz | 1 000 - 100 km | Submarine communication, Communication within mines |- | Very low frequency | VLF | 3 - 30 kHz | 100 - 10 km | Navigation, time signals, submarine communication, wireless heart rate monitors, geophysics |- | Low frequency | LF | 30 - 300 kHz | 10 - 1 km | Navigation, time signals, AM longwave broadcasting (Europe and parts of Asia), RFID, amateur radio |- | Medium frequency | MF | 300 kHz - 3 MHz | 1 km - 100 m | AM medium-wave broadcasts, amateur radio, avalanche beacons |- | High frequency | HF | 3 - 30 MHz | 100 m - 10 m | Shortwave broadcasts, citizens' band radio, amateur radio and over-the-horizon aviation communications, RFID, Over-the-horizon radar, Automatic link establishment (ALE) / Near Vertical Incidence Skywave (NVIS) radio communications, Marine and mobile radio telephony |- | Very high frequency | VHF | 30 - 300 MHz | 10 - 1 m | FM, television broadcasts and line-of-sight ground-to-aircraft and aircraft-to-aircraft communications. Land Mobile and Maritime Mobile communications, amateur radio, weather radio |- | Ultra high frequency | UHF | 300 MHz - 3 GHz | 1 m - 100 mm | Television broadcasts, microwave ovens, microwave devices/communications, mobile phones, wireless LAN, Bluetooth, ZigBee, GPS and two-way radios such as Land Mobile, FRS and GMRS radios, amateur radio |- | Super high frequency | SHF | 3 - 30 GHz | 100 - 10 mm | Microwave devices/communications, wireless LAN, most modern radars, communications satellites, satellite television broadcasting, DBS, amateur radio |- | Extremely high frequency | EHF | 30 - 300 GHz | 10 - 1 mm | High-frequency microwave radio relay, microwave remote sensing, amateur radio, directed-energy weapon, millimeter wave scanner |- | Terahertz or Tremendously high frequency | THz or THF | 300 GHz - 3 THz | 1 - 0.1 mm | Terahertz imaging, ultrafast molecular dynamics, condensed-matter physics, terahertz time-domain spectroscopy, terahertz computing/communications, sub-mm remote sensing, amateur radio |} 4e7c66ee35fc8200405c1f9b20badfd108b5b433 File:ParaboloidConcentrator.pdf 6 372 1637 2011-09-21T21:08:33Z Gge002 52 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Jupiter1.jpg 6 373 1640 2011-09-22T06:39:21Z Gge002 52 Particle trajectory in Jupiter's magnetic fieald wikitext text/x-wiki Particle trajectory in Jupiter's magnetic fieald 9e166b23f96dabbad43b138db68bcf3ae4f5644d File:Jupiter2.jpg 6 374 1641 2011-09-22T06:40:27Z Gge002 52 Jupiter radio frequency emissions wikitext text/x-wiki Jupiter radio frequency emissions 635adec04405b513198775e71c01e206ef5a97d1 File:Jupiter3.jpg 6 375 1642 2011-09-22T06:41:06Z Gge002 52 Jupiter - A-, B- and C type radio bursts wikitext text/x-wiki Jupiter - A-, B- and C type radio bursts 9ac8bd711dedbc2a39a8f0a422fc01f90ffe8e2b File:Ch1.pdf 6 377 1647 2011-09-22T11:45:19Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.1 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.1 d0ebb774a08fbea1d29e6a6e9f67f405cff25070 File:Ch2.pdf 6 378 1648 2011-09-22T11:46:04Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.2 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.2 1bb5f89f51aea485ad6bdf2cb18e5f069a6bc986 File:Ch3.pdf 6 379 1649 2011-09-22T11:46:16Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.3 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.3 d1bbb1af788f095bfa9be1acad25633c8391c853 File:Ch4.pdf 6 380 1650 2011-09-22T11:46:31Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.4 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.4 0f5fdd59e1970e7c1660fba57aad7a1d1402916b File:Ch5.pdf 6 381 1651 2011-09-22T11:57:29Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.5 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.5 d975e0042c1503fa5726c0cc11037e44ac60c393 File:Ch6.pdf 6 382 1652 2011-09-22T11:57:41Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.6 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.6 5d571dfc8ab8f71d87d74b55117579cff3d99273 File:Ch7.pdf 6 383 1653 2011-09-22T11:57:52Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.7 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.7 cc528e355a15c9fe5136784609a485291d6a6571 File:Ch8.pdf 6 384 1654 2011-09-22T11:58:35Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.8 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.8 5e44f2b4cf5e21919569dea998b6fe30750a7a43 File:Ch9.pdf 6 385 1655 2011-09-22T11:58:48Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.9 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.9 f5dc2c91ca68fd8566198bdec77a1d20729dcb16 File:Ch10.pdf 6 386 1656 2011-09-22T11:59:03Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.10 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.10 a6b14e61f8c2723d09b319f2c4afa581f18787e7 File:Ch11.pdf 6 387 1657 2011-09-22T11:59:34Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.11 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.11 8bf1eab4d6641b03a40a21a56b64c7d3023fca95 File:Ch12.pdf 6 388 1658 2011-09-22T12:01:21Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.12 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.12 38a41c7a4c8d483a2994e03dba274d18a4516e81 File:Ch13.pdf 6 389 1659 2011-09-22T12:01:31Z Gge002 52 The Radio Sky and How to Observe It - by Jeff Lashley Ch.13 wikitext text/x-wiki The Radio Sky and How to Observe It - by Jeff Lashley Ch.13 bdabf4e04f6acb109cf08da3193009251ef4997d DamaraResults 0 348 1664 1608 2011-09-27T12:39:08Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Researcher's corner'' [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === 3a3b8b2a78542ed6e0a283dacd2f5d5a98f14e5c 1665 1664 2011-09-27T12:39:29Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === 9b907c9995d6da17bc51f1314f2931416e777163 1666 1665 2011-09-27T12:46:03Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === == Theses == === Master === === PhD === f4bd3047f379a32027c981e1cc82ce070cfa8506 1669 1666 2011-09-28T09:40:28Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] == Theses == === Master === === PhD === 559eabd791f9436409111e383354015732cf4ab7 DamaraResults 0 348 1670 1669 2011-09-28T09:40:52Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === bdf7cdf7dc2a35b922a946ad39a33d1677d483d9 1675 1670 2011-10-17T10:38:54Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === 719623347001d1c86284f1e56935ed6120927c9b 1676 1675 2011-10-17T10:39:28Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === fb55a390d0814a02f0b4327bb25d39584db9027e 1677 1676 2011-10-24T09:18:23Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === c703cea219ada0437b695cc1b2bd6c723cb411b6 1678 1677 2011-11-03T13:43:09Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october), Trygve Buanes * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === 18acb8ff2e803be014702873efc98121b264514b 1681 1678 2011-11-14T13:21:52Z Hsa061 18 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october), Trygve Buanes * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === d0d0f855ad46802fd03ba200afc7865b87c1abde 1682 1681 2011-11-14T13:24:50Z Hsa061 18 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october), Trygve Buanes * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === 1e9f85851a9e00fd48e4cc7580cffad7ecbdde4e 1683 1682 2011-11-14T13:40:25Z Hsa061 18 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * Presentation [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Presentation of the possibilities of Norwegian membership of CTA, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === 15377e2f8406a340ad579c308962254c5ab48940 1684 1683 2011-11-14T13:43:02Z Hsa061 18 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === 5ae544e45da9bb878a303730a5a216ce09b0db55 1685 1684 2011-11-15T08:42:22Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === 88ef9d62137e72ec1e186a621636de58d09a329d 1686 1685 2011-11-15T09:03:44Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) == Theses == === Master === === PhD === cf9fee72164a3b0fa7e03f92758f0cb4569663b8 1697 1686 2011-12-23T08:21:28Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844] (25. november 2011) == Theses == === Master === === PhD === 33290e3fc81d13aeed5aa3b7cc1c2c9de300ee14 1698 1697 2011-12-23T08:22:48Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844 ATL-COM-PHYS-2011-1619] (25. november 2011) == Theses == === Master === === PhD === f73a7f4275f9e002379d1dcbe05fbecd12f74f43 Main Page 0 1 1671 1630 2011-10-11T16:11:34Z Tre043 64 wikitext text/x-wiki <big>'''Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis] Wiki'''</big> * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] * [[DAMARA]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [[Nano Physics| Nano Physics Group]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 4d7a4befb1b0130f65a2e3f97977701f9dba7a18 IC studio 0 28 1679 1138 2011-11-07T15:44:41Z Nfyku 4 Removed xset +fp command as it seems to crash the X-client wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. ssh -X mikroserver2 /prog/design_kits/micro.init.csh ==Starte opp IC studio== Skriv i et terminalvindu: <del>xset +fp tcp/mikroserver2:7100</del> # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 tcsh source /prog/design_kits/mentor_init/mentor-s35d4.csh ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. Om du ønsker å bruke Mentor programmene fra en Windows-PC så se på forklaringene i [[Teknisk hjelp]] ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/htmldocs/ start f.eks. firefox slik: firefox file:///prog/mentor/mgc/ic.2005.1/shared/htmldocs/_bk_icda/_bk_icda.html Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: acroread /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". [[Category:Mikroelektronikk]] 9a81f20da21376b38af8f72567274224fd61f51f PHYS222 0 202 1680 1663 2011-11-10T12:29:22Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf|Elementary Physics of P-N Junctions]] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html|The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 2396dea608ba2f73a718485876dfde073b796e17 1695 1680 2011-11-29T08:21:33Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] == Nettressurser == * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf Elementary Physics of P-N Junctions]] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] f6a9e435e8887828c4dd8643f1ff15c1d7c3d483 1696 1695 2011-11-29T08:22:51Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf Elementary Physics of P-N Junctions]] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 92ea59ca92565bd47df6eaabeb2519c245a50c59 ParticlePhysicsGroupMeetings 0 139 1687 1044 2011-11-22T11:21:02Z St01355 57 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2011 === Special pensum Course: Introduction to ATLAS November 2011 Wolfgang Liebig, Wolfgang.Liebig at cern.ch ATLAS detector ATLAS physics ATLAS reconstruction and performance ATLAS tools and practicalities === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] ab694b97eced4d4198798f8f9efa09ddfbe9ad7d 1688 1687 2011-11-22T11:29:59Z St01355 57 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * [[ATLAS detector]] * [[ATLAS physics]] * [[ATLAS reconstruction and performance]] * [[ATLAS tools and practicalities]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] b49315597a8e7b47398aa37ef188b4426d4d3a21 1689 1688 2011-11-22T11:35:43Z St01355 57 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector]] * ATLAS physics [[File:ATLASphyics]] * ATLAS reconstruction and performance [[File:ATLASperformance]] * ATLAS tools and practicalities [[File:ATLAStools]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] e0799cc98be1a1bdabf073fcbc3f6af7bb031d55 1691 1689 2011-11-22T11:40:31Z St01355 57 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] d6aeeba9a1e03ff3f963038ebc473bfb9582ca99 File:ATLASdetector.pdf 6 392 1690 2011-11-22T11:39:26Z St01355 57 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:ATLASphyics.pdf 6 393 1692 2011-11-22T11:41:02Z St01355 57 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:ATLASperformance.pdf 6 394 1693 2011-11-22T11:41:31Z St01355 57 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:ATLAStools.pdf 6 395 1694 2011-11-22T11:41:53Z St01355 57 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 DAMARA 0 331 1699 1577 2012-01-05T11:11:43Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 2329b2e89e44d27168bac2ed8a1fc48a594d4436 1706 1699 2012-01-12T08:30:34Z Kmo078 65 Added a link to DarkSusy installation tips wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] cc0a8454ce4bffdf77b50ee873acdc19316f8798 CTA information 0 396 1700 2012-01-05T11:12:16Z Hsa061 18 Created page with '* Indico access: https://www.cta-observatory.org/indico/userRegistration.py' wikitext text/x-wiki * Indico access: https://www.cta-observatory.org/indico/userRegistration.py aac971271d78aa481f6a468d2418c3b1ce2311f7 1701 1700 2012-01-05T12:43:39Z Hsa061 18 wikitext text/x-wiki * Indico access: https://www.cta-observatory.org/indico/userRegistration.py * The Design Concepts report: http://uk.arXiv.org/abs/1008.3703 * General CTA meetings: https://hepwww.rl.ac.uk/CTAforum2010/ 5f562db1c9593ca5652e5a324e7df0cf25d2b4d9 1702 1701 2012-01-05T12:46:14Z Hsa061 18 wikitext text/x-wiki * Indico access: https://www.cta-observatory.org/indico/userRegistration.py * The Design Concepts report: http://uk.arXiv.org/abs/1008.3703 * General CTA meetings: https://hepwww.rl.ac.uk/CTAforum2010/ * Link workshop on Physics 2010: http://indico.cern.ch/conferenceDisplay.py?confId=105442 * End-to-End Calibration workshop 2011: http://www.cta-observatory.org/indico/conferenceDisplay.py?confId=111 55c2208024df7c0a9bf34825c5ddbd0edd5c5a55 1703 1702 2012-01-05T12:49:46Z Hsa061 18 wikitext text/x-wiki * Indico access: https://www.cta-observatory.org/indico/userRegistration.py * The Design Concepts report: http://uk.arXiv.org/abs/1008.3703 * General CTA meetings: https://hepwww.rl.ac.uk/CTAforum2010/ * Link workshop on Physics 2010: http://indico.cern.ch/conferenceDisplay.py?confId=105442 * End-to-End Calibration workshop 2011: http://www.cta-observatory.org/indico/conferenceDisplay.py?confId=111 * ATAC mailing list: cta-wp-atac@cta-observatory.org 2bdb3c4ebd0e028c765207a49a47644c9d23e54e 1704 1703 2012-01-05T12:52:26Z Hsa061 18 wikitext text/x-wiki * Main web-page: http://www.cta-observatory.org/ * Indico access: https://www.cta-observatory.org/indico/userRegistration.py * The Design Concepts report: http://uk.arXiv.org/abs/1008.3703 * General CTA meetings: https://hepwww.rl.ac.uk/CTAforum2010/ * Link workshop on Physics 2010: http://indico.cern.ch/conferenceDisplay.py?confId=105442 * End-to-End Calibration workshop 2011: http://www.cta-observatory.org/indico/conferenceDisplay.py?confId=111 * ATAC mailing list: cta-wp-atac@cta-observatory.org * PHYS mailing list: cta-wp-phys@cta-observatory.org d1ec1c33ffc1583dcdb405359a6416a82322a322 File:Thesis Helle.pdf 6 397 1705 2012-01-10T11:17:52Z Nfyst 67 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Installing DarkSusy 0 398 1707 2012-01-12T08:34:04Z Kmo078 65 Created a page with installation experience w/ DarkSusy wikitext text/x-wiki When installing [http://www.physto.se/~edsjo/darksusy/ DarkSusy], make sure to [[Category:Installation]] 1d38c8a066168b318d8968777a4824ee1a5c58b9 1708 1707 2012-01-12T08:41:15Z Kmo078 65 Created a page with installation experience w/ DarkSusy wikitext text/x-wiki To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' [[Category:Installing]] 16851655db9266b21ff42db63ab70488554a594b 1709 1708 2012-01-12T08:52:09Z Kmo078 65 wikitext text/x-wiki To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' If you run run mac osx 10.6, the c++ and fortran compilers will not compile for the same architecture together unless you modify the configure command to ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. [[Category:Installing]] 2be383c8ca27764582d477b36b0fb72967f1bba2 1710 1709 2012-01-12T08:53:05Z Kmo078 65 wikitext text/x-wiki To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' *If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' *If you run run (tested on mac osx 10.6), the c++ and fortran compilers will not compile for the same architecture together unless you modify the configure command to ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. [[Category:Installing]] 3b25b27b2e18b9d2da72c0a9b450832a83d5a81c 1711 1710 2012-01-12T08:59:51Z Kmo078 65 wikitext text/x-wiki To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' *If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' *If you run mac (tested on mac osx 10.6), the c++ and fortran compilers will not compile for the same architecture unless you modify the configure command to ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. [[Category:Installing]] 25d6a33b2f02be361e8f1db0e259b18e9174c313 1717 1711 2012-01-18T10:50:56Z Kmo078 65 Added info on how to compile subprograms wikitext text/x-wiki ==Installing== To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' *If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' *If you run mac (tested on mac osx 10.6), the c++ and fortran compilers will not compile for the same architecture unless you modify the configure command to ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. ==Compiling programs== To compile your own Fortran program written with DarkSusy, the call should be similar to (if you've configured with gfortran): ''gfortran -I$PWD/../include -L$PWD/../lib -o ProgramName ProgramName.f -ldarksusy -lFH -lHB'' For examples, one can look in the makefile in ''test'', the one above compiles ''dstest'' [[Category:Installing]] b9fa1667154a62bae09e68fa35e3ad18b670ab18 1718 1717 2012-01-18T10:51:41Z Kmo078 65 wikitext text/x-wiki ==Installing== To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' *If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' *If you run mac (tested on mac osx 10.6), the c++ and fortran compilers will not compile for the same architecture unless you modify the configure command to ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. ==Compiling programs== To compile your own Fortran program written with DarkSusy, the call should be similar to (if you've configured with gfortran): ''gfortran -I$PWD/../include -L$PWD/../lib -o ProgramName ProgramName.f -ldarksusy -lFH -lHB'' For examples, one can look in the makefile in ''test''. [[Category:Installing]] 7c9de6330714771f10684f53842be68a6b507c4f Microelectronics group 0 25 1712 1291 2012-01-17T08:25:34Z Nfyku 4 removed link to hdl-designer wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) [[Category:Mikroelektronikk]] cd97244bcab965d278c006f59d5bffe1d7fd300e Modelsim/Questa 0 33 1713 1104 2012-01-17T09:55:24Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[http://www.edn.com/contents/images/46098.pdf 10 tips for generating reusable VHDL]] [[http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide]] [[Category:Mikroelektronikk]] e54699caaa127773d35d79872a7526271be3f869 ATLASThesesNotes 0 234 1714 1241 2012-01-17T21:51:34Z Tbu082 19 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]] 60ae2a2f2fa06dba04cf59d3cee6d6b99ad5a131 FOCAL - Forward Calorimeter 0 317 1715 1595 2012-01-18T07:51:36Z Dfe002 7 /* Software */ wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ [[Setting Up PetaLinux System]] Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk] [[Get readout box up and running]] == Download section == #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 [[Category:Mikroelektronikk]] 7ed492c30336a3e82f9a4eb6e575b5a48c51a343 Get readout box up and running 0 399 1716 2012-01-18T07:57:04Z Dfe002 7 Created page with '- Use Impact to configure FPGA(s) - start TFTP server - Use XMD: <pre> $ connect mb mdm -debugdevice devicenr 4 $ dow u-boot.elf </pre> Open serial console <pre> $ tftp </pre> …' wikitext text/x-wiki - Use Impact to configure FPGA(s) - start TFTP server - Use XMD: <pre> $ connect mb mdm -debugdevice devicenr 4 $ dow u-boot.elf </pre> Open serial console <pre> $ tftp </pre> Boot Linux kernel: <pre> $ bootm </pre> Adjust MAC address and load startup script: <pre> $ ifconfig eth0 hw ether 00:0a:35:02:4b:a8 $ udhcpc $ /home/test/load.sh </pre> d7e8954c8d19bf78d40483933d2d331e0527ba37 Electronics for the Time Projection Chamber (TPC) 0 4 1719 1417 2012-01-20T08:45:53Z Stud4729 6 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br> '''v 1.5 (17.08.2010)'''<br> <ul> <li>Fix done by Attiq Ur Rehman:<br> There is minor change in the "fifo wrapper":<br> Line #73 new signal cnt_dn<br> Line #91 comparison with "read_counter"<br> Line #170,172,174 check of possible logical conditions<br> This file was used for the RCU firmware (from 10th July and on wards) to fix the Erroneous behavior causing busy condition. </li> </ul> <br> '''v 1.6 (20.01.2012)'''<br> <ul> <li>Single l2 messages does not generate CDH</li> <li>Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register.</li> <li>Cleaned up code and removed commented lines (RoI is now gone)</li> <li>Minor changes to DAQ header error word</li> <li>New output: sync - software trigger decoded from RoC = 0xD</li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.5_source_files.rar Firmware v 1.5 - VHDL files, including testbench]<br> <br> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.6.pdf Specification/design document for Firmware version 1.6] (Updated 20.01.12) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.6_source_files.zip Firmware v 1.6 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool]. Note that version 9.0 gives errors when trying to program the FPGA. [ftp://ftp.actel.com/downloads/flashpro/FlashPro86.zip Version 8.6] is the last version that works for the Actel on the RCU.<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 309e3e329c9393a3fe905e4ea4cae40adcf3e530 1720 1719 2012-01-30T10:56:31Z Dfe002 7 Added version 2.9 changes wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> '''2.9 (30.1.2012)'''<br> <ul> <li> Updated udhcpc <li> Updated rcS (udhcpc parameters, ntp timeserver, bootscript execution order) <li> modified nfsmount_all to only mount dcbrw and dcbro <li> added _S05restartreadback.sh, S27enable_ttcrx.sh, S31unsetOldMode.sh, S52startntp.sh to /etc/boot <li> removed S30rcu-conf.sh, S31setoldmode from /etc/boot <li> disabled CONFIG_DEBUG_SLAB in kernel </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br> '''v 1.5 (17.08.2010)'''<br> <ul> <li>Fix done by Attiq Ur Rehman:<br> There is minor change in the "fifo wrapper":<br> Line #73 new signal cnt_dn<br> Line #91 comparison with "read_counter"<br> Line #170,172,174 check of possible logical conditions<br> This file was used for the RCU firmware (from 10th July and on wards) to fix the Erroneous behavior causing busy condition. </li> </ul> <br> '''v 1.6 (20.01.2012)'''<br> <ul> <li>Single l2 messages does not generate CDH</li> <li>Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register.</li> <li>Cleaned up code and removed commented lines (RoI is now gone)</li> <li>Minor changes to DAQ header error word</li> <li>New output: sync - software trigger decoded from RoC = 0xD</li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.5_source_files.rar Firmware v 1.5 - VHDL files, including testbench]<br> <br> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.6.pdf Specification/design document for Firmware version 1.6] (Updated 20.01.12) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.6_source_files.zip Firmware v 1.6 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool]. Note that version 9.0 gives errors when trying to program the FPGA. [ftp://ftp.actel.com/downloads/flashpro/FlashPro86.zip Version 8.6] is the last version that works for the Actel on the RCU.<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 1a99e172f0c6d88e6a853da738fc36b4ea643157 1721 1720 2012-01-30T11:02:25Z Dfe002 7 /* Download Section */ wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> '''2.9 (30.1.2012)'''<br> <ul> <li> Updated udhcpc <li> Updated rcS (udhcpc parameters, ntp timeserver, bootscript execution order) <li> modified nfsmount_all to only mount dcbrw and dcbro <li> added _S05restartreadback.sh, S27enable_ttcrx.sh, S31unsetOldMode.sh, S52startntp.sh to /etc/boot <li> removed S30rcu-conf.sh, S31setoldmode from /etc/boot <li> disabled CONFIG_DEBUG_SLAB in kernel </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <li>'''Version 2.9: '''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0031.hex hex file for dcs0031] | [[Firmware files for boards 30 - 1400]] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br> '''v 1.5 (17.08.2010)'''<br> <ul> <li>Fix done by Attiq Ur Rehman:<br> There is minor change in the "fifo wrapper":<br> Line #73 new signal cnt_dn<br> Line #91 comparison with "read_counter"<br> Line #170,172,174 check of possible logical conditions<br> This file was used for the RCU firmware (from 10th July and on wards) to fix the Erroneous behavior causing busy condition. </li> </ul> <br> '''v 1.6 (20.01.2012)'''<br> <ul> <li>Single l2 messages does not generate CDH</li> <li>Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register.</li> <li>Cleaned up code and removed commented lines (RoI is now gone)</li> <li>Minor changes to DAQ header error word</li> <li>New output: sync - software trigger decoded from RoC = 0xD</li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.5_source_files.rar Firmware v 1.5 - VHDL files, including testbench]<br> <br> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.6.pdf Specification/design document for Firmware version 1.6] (Updated 20.01.12) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.6_source_files.zip Firmware v 1.6 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool]. Note that version 9.0 gives errors when trying to program the FPGA. [ftp://ftp.actel.com/downloads/flashpro/FlashPro86.zip Version 8.6] is the last version that works for the Actel on the RCU.<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 3e82d25e4f155d27c855a4564e26e46706f9a5f7 Firmware files for boards 30 - 1400 0 400 1722 2012-01-30T11:23:35Z Dfe002 7 Created page with '[http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0030.hex dcs0030] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.…' wikitext text/x-wiki [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0030.hex dcs0030] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0031.hex dcs0031] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0032.hex dcs0032] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0033.hex dcs0033] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0034.hex dcs0034] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0035.hex dcs0035] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0036.hex dcs0036] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0037.hex dcs0037] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0038.hex dcs0038] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0039.hex dcs0039] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0040.hex dcs0040] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0041.hex dcs0041] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0042.hex dcs0042] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0043.hex dcs0043] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0044.hex dcs0044] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0045.hex dcs0045] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0046.hex dcs0046] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0047.hex dcs0047] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0048.hex dcs0048] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0049.hex dcs0049] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0050.hex dcs0050] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0051.hex dcs0051] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0052.hex dcs0052] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0053.hex dcs0053] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0054.hex dcs0054] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0055.hex dcs0055] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0056.hex dcs0056] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0057.hex dcs0057] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0058.hex dcs0058] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0059.hex dcs0059] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0060.hex dcs0060] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0061.hex dcs0061] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0062.hex dcs0062] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0063.hex dcs0063] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0064.hex dcs0064] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0065.hex dcs0065] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0066.hex dcs0066] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0067.hex dcs0067] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0068.hex dcs0068] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0069.hex dcs0069] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0070.hex dcs0070] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0071.hex dcs0071] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0072.hex dcs0072] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0073.hex dcs0073] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0074.hex dcs0074] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0075.hex dcs0075] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0076.hex dcs0076] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0077.hex dcs0077] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0078.hex dcs0078] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0079.hex dcs0079] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0080.hex dcs0080] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0081.hex dcs0081] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0082.hex dcs0082] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0083.hex dcs0083] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0084.hex dcs0084] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0085.hex dcs0085] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0086.hex dcs0086] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0087.hex dcs0087] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0088.hex dcs0088] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0089.hex dcs0089] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0090.hex dcs0090] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0091.hex dcs0091] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0092.hex dcs0092] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0093.hex dcs0093] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0094.hex dcs0094] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0095.hex dcs0095] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0096.hex dcs0096] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0097.hex dcs0097] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0098.hex dcs0098] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0099.hex dcs0099] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0100.hex dcs0100] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0101.hex dcs0101] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0102.hex dcs0102] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0103.hex dcs0103] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0104.hex dcs0104] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0105.hex dcs0105] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0106.hex dcs0106] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0107.hex dcs0107] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0108.hex dcs0108] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0109.hex dcs0109] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0110.hex dcs0110] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0111.hex dcs0111] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0112.hex dcs0112] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0113.hex dcs0113] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0114.hex dcs0114] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0115.hex dcs0115] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0116.hex dcs0116] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0117.hex dcs0117] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0118.hex dcs0118] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0119.hex dcs0119] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0120.hex dcs0120] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0121.hex dcs0121] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0122.hex dcs0122] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0123.hex dcs0123] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0124.hex dcs0124] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0125.hex dcs0125] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0126.hex dcs0126] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0127.hex dcs0127] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0128.hex dcs0128] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0129.hex dcs0129] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0130.hex dcs0130] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0131.hex dcs0131] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0132.hex dcs0132] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0133.hex dcs0133] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0134.hex dcs0134] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0135.hex dcs0135] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0136.hex dcs0136] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0137.hex dcs0137] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0138.hex dcs0138] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0139.hex dcs0139] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0140.hex dcs0140] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0141.hex dcs0141] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0142.hex dcs0142] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0143.hex dcs0143] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0144.hex dcs0144] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0145.hex dcs0145] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0146.hex dcs0146] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0147.hex dcs0147] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0148.hex dcs0148] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0149.hex dcs0149] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0150.hex dcs0150] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0151.hex dcs0151] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0152.hex dcs0152] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0153.hex dcs0153] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0154.hex dcs0154] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0155.hex dcs0155] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0156.hex dcs0156] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0157.hex dcs0157] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0158.hex dcs0158] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0159.hex dcs0159] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0160.hex dcs0160] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0161.hex dcs0161] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0162.hex dcs0162] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0163.hex dcs0163] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0164.hex dcs0164] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0165.hex dcs0165] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0166.hex dcs0166] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0167.hex dcs0167] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0168.hex dcs0168] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0169.hex dcs0169] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0170.hex dcs0170] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0171.hex dcs0171] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0172.hex dcs0172] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0173.hex dcs0173] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0174.hex dcs0174] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0175.hex dcs0175] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0176.hex dcs0176] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0177.hex dcs0177] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0178.hex dcs0178] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0179.hex dcs0179] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0180.hex dcs0180] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0181.hex dcs0181] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0182.hex dcs0182] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0183.hex dcs0183] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0184.hex dcs0184] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0185.hex dcs0185] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0186.hex dcs0186] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0187.hex dcs0187] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0188.hex dcs0188] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0189.hex dcs0189] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0190.hex dcs0190] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0191.hex dcs0191] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0192.hex dcs0192] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0193.hex dcs0193] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0194.hex dcs0194] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0195.hex dcs0195] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0196.hex dcs0196] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0197.hex dcs0197] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0198.hex dcs0198] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0199.hex dcs0199] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0200.hex dcs0200] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0201.hex dcs0201] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0202.hex dcs0202] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0203.hex dcs0203] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0204.hex dcs0204] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0205.hex dcs0205] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0206.hex dcs0206] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0207.hex dcs0207] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0208.hex dcs0208] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0209.hex dcs0209] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0210.hex dcs0210] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0211.hex dcs0211] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0212.hex dcs0212] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0213.hex dcs0213] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0214.hex dcs0214] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0215.hex dcs0215] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0216.hex dcs0216] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0217.hex dcs0217] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0218.hex dcs0218] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0219.hex dcs0219] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0220.hex dcs0220] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0221.hex dcs0221] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0222.hex dcs0222] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0223.hex dcs0223] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0224.hex dcs0224] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0225.hex dcs0225] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0226.hex dcs0226] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0227.hex dcs0227] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0228.hex dcs0228] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0229.hex dcs0229] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0230.hex dcs0230] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0231.hex dcs0231] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0232.hex dcs0232] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0233.hex dcs0233] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0234.hex dcs0234] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0235.hex dcs0235] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0236.hex dcs0236] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0237.hex dcs0237] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0238.hex dcs0238] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0239.hex dcs0239] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0240.hex dcs0240] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0241.hex dcs0241] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0242.hex dcs0242] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0243.hex dcs0243] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0244.hex dcs0244] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0245.hex dcs0245] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0246.hex dcs0246] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0247.hex dcs0247] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0248.hex dcs0248] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0249.hex dcs0249] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0250.hex dcs0250] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0251.hex dcs0251] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0252.hex dcs0252] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0253.hex dcs0253] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0254.hex dcs0254] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0255.hex dcs0255] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0256.hex dcs0256] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0257.hex dcs0257] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0258.hex dcs0258] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0259.hex dcs0259] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0260.hex dcs0260] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0261.hex dcs0261] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0262.hex dcs0262] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0263.hex dcs0263] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0264.hex dcs0264] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0265.hex dcs0265] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0266.hex dcs0266] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0267.hex dcs0267] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0268.hex dcs0268] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0269.hex dcs0269] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0270.hex dcs0270] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0271.hex dcs0271] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0272.hex dcs0272] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0273.hex dcs0273] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0274.hex dcs0274] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0275.hex dcs0275] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0276.hex dcs0276] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0277.hex dcs0277] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0278.hex dcs0278] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0279.hex dcs0279] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0280.hex dcs0280] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0281.hex dcs0281] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0282.hex dcs0282] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0283.hex dcs0283] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0284.hex dcs0284] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0285.hex dcs0285] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0286.hex dcs0286] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0287.hex dcs0287] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0288.hex dcs0288] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0289.hex dcs0289] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0290.hex dcs0290] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0291.hex dcs0291] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0292.hex dcs0292] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0293.hex dcs0293] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0294.hex dcs0294] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0295.hex dcs0295] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0296.hex dcs0296] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0297.hex dcs0297] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0298.hex dcs0298] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0299.hex dcs0299] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0300.hex dcs0300] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0301.hex dcs0301] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0302.hex dcs0302] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0303.hex dcs0303] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0304.hex dcs0304] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0305.hex dcs0305] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0306.hex dcs0306] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0307.hex dcs0307] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0308.hex dcs0308] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0309.hex dcs0309] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0310.hex dcs0310] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0311.hex dcs0311] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0312.hex dcs0312] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0313.hex dcs0313] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0314.hex dcs0314] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0315.hex dcs0315] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0316.hex dcs0316] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0317.hex dcs0317] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0318.hex dcs0318] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0319.hex dcs0319] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0320.hex dcs0320] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0321.hex dcs0321] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0322.hex dcs0322] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0323.hex dcs0323] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0324.hex dcs0324] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0325.hex dcs0325] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0326.hex dcs0326] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0327.hex dcs0327] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0328.hex dcs0328] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0329.hex dcs0329] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0330.hex dcs0330] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0331.hex dcs0331] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0332.hex dcs0332] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0333.hex dcs0333] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0334.hex dcs0334] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0335.hex dcs0335] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0336.hex dcs0336] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0337.hex dcs0337] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0338.hex dcs0338] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0339.hex dcs0339] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0340.hex dcs0340] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0341.hex dcs0341] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0342.hex dcs0342] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0343.hex dcs0343] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0344.hex dcs0344] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0345.hex dcs0345] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0346.hex dcs0346] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0347.hex dcs0347] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0348.hex dcs0348] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0349.hex dcs0349] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0350.hex dcs0350] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0351.hex dcs0351] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0352.hex dcs0352] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0353.hex dcs0353] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0354.hex dcs0354] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0355.hex dcs0355] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0356.hex dcs0356] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0357.hex dcs0357] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0358.hex dcs0358] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0359.hex dcs0359] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0360.hex dcs0360] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0361.hex dcs0361] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0362.hex dcs0362] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0363.hex dcs0363] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0364.hex dcs0364] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0365.hex dcs0365] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0366.hex dcs0366] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0367.hex dcs0367] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0368.hex dcs0368] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0369.hex dcs0369] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0370.hex dcs0370] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0371.hex dcs0371] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0372.hex dcs0372] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0373.hex dcs0373] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0374.hex dcs0374] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0375.hex dcs0375] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0376.hex dcs0376] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0377.hex dcs0377] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0378.hex dcs0378] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0379.hex dcs0379] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0380.hex dcs0380] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0381.hex dcs0381] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0382.hex dcs0382] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0383.hex dcs0383] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0384.hex dcs0384] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0385.hex dcs0385] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0386.hex dcs0386] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0387.hex dcs0387] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0388.hex dcs0388] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0389.hex dcs0389] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0390.hex dcs0390] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0391.hex dcs0391] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0392.hex dcs0392] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0393.hex dcs0393] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0394.hex dcs0394] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0395.hex dcs0395] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0396.hex dcs0396] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0397.hex dcs0397] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0398.hex dcs0398] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0399.hex dcs0399] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0400.hex dcs0400] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0401.hex dcs0401] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0402.hex dcs0402] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0403.hex dcs0403] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0404.hex dcs0404] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0405.hex dcs0405] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0406.hex dcs0406] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0407.hex dcs0407] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0408.hex dcs0408] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0409.hex dcs0409] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0410.hex dcs0410] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0411.hex dcs0411] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0412.hex dcs0412] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0413.hex dcs0413] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0414.hex dcs0414] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0415.hex dcs0415] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0416.hex dcs0416] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0417.hex dcs0417] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0418.hex dcs0418] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0419.hex dcs0419] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0420.hex dcs0420] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0421.hex dcs0421] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0422.hex dcs0422] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0423.hex dcs0423] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0424.hex dcs0424] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0425.hex dcs0425] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0426.hex dcs0426] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0427.hex dcs0427] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0428.hex dcs0428] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0429.hex dcs0429] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0430.hex dcs0430] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0431.hex dcs0431] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0432.hex dcs0432] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0433.hex dcs0433] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0434.hex dcs0434] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0435.hex dcs0435] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0436.hex dcs0436] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0437.hex dcs0437] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0438.hex dcs0438] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0439.hex dcs0439] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0440.hex dcs0440] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0441.hex dcs0441] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0442.hex dcs0442] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0443.hex dcs0443] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0444.hex dcs0444] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0445.hex dcs0445] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0446.hex dcs0446] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0447.hex dcs0447] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0448.hex dcs0448] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0449.hex dcs0449] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0450.hex dcs0450] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0451.hex dcs0451] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0452.hex dcs0452] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0453.hex dcs0453] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0454.hex dcs0454] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0455.hex dcs0455] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0456.hex dcs0456] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0457.hex dcs0457] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0458.hex dcs0458] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0459.hex dcs0459] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0460.hex dcs0460] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0461.hex dcs0461] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0462.hex dcs0462] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0463.hex dcs0463] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0464.hex dcs0464] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0465.hex dcs0465] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0466.hex dcs0466] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0467.hex dcs0467] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0468.hex dcs0468] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0469.hex dcs0469] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0470.hex dcs0470] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0471.hex dcs0471] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0472.hex dcs0472] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0473.hex dcs0473] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0474.hex dcs0474] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0475.hex dcs0475] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0476.hex dcs0476] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0477.hex dcs0477] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0478.hex dcs0478] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0479.hex dcs0479] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0480.hex dcs0480] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0481.hex dcs0481] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0482.hex dcs0482] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0483.hex dcs0483] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0484.hex dcs0484] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0485.hex dcs0485] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0486.hex dcs0486] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0487.hex dcs0487] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0488.hex dcs0488] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0489.hex dcs0489] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0490.hex dcs0490] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0491.hex dcs0491] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0492.hex dcs0492] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0493.hex dcs0493] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0494.hex dcs0494] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0495.hex dcs0495] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0496.hex dcs0496] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0497.hex dcs0497] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0498.hex dcs0498] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0499.hex dcs0499] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0500.hex dcs0500] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0501.hex dcs0501] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0502.hex dcs0502] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0503.hex dcs0503] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0504.hex dcs0504] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0505.hex dcs0505] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0506.hex dcs0506] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0507.hex dcs0507] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0508.hex dcs0508] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0509.hex dcs0509] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0510.hex dcs0510] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0511.hex dcs0511] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0512.hex dcs0512] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0513.hex dcs0513] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0514.hex dcs0514] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0515.hex dcs0515] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0516.hex dcs0516] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0517.hex dcs0517] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0518.hex dcs0518] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0519.hex dcs0519] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0520.hex dcs0520] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0521.hex dcs0521] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0522.hex dcs0522] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0523.hex dcs0523] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0524.hex dcs0524] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0525.hex dcs0525] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0526.hex dcs0526] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0527.hex dcs0527] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0528.hex dcs0528] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0529.hex dcs0529] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0530.hex dcs0530] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0531.hex dcs0531] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0532.hex dcs0532] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0533.hex dcs0533] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0534.hex dcs0534] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0535.hex dcs0535] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0536.hex dcs0536] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0537.hex dcs0537] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0538.hex dcs0538] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0539.hex dcs0539] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0540.hex dcs0540] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0541.hex dcs0541] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0542.hex dcs0542] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0543.hex dcs0543] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0544.hex dcs0544] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0545.hex dcs0545] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0546.hex dcs0546] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0547.hex dcs0547] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0548.hex dcs0548] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0549.hex dcs0549] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0550.hex dcs0550] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0551.hex dcs0551] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0552.hex dcs0552] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0553.hex dcs0553] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0554.hex dcs0554] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0555.hex dcs0555] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0556.hex dcs0556] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0557.hex dcs0557] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0558.hex dcs0558] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0559.hex dcs0559] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0560.hex dcs0560] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0561.hex dcs0561] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0562.hex dcs0562] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0563.hex dcs0563] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0564.hex dcs0564] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0565.hex dcs0565] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0566.hex dcs0566] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0567.hex dcs0567] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0568.hex dcs0568] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0569.hex dcs0569] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0570.hex dcs0570] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0571.hex dcs0571] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0572.hex dcs0572] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0573.hex dcs0573] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0574.hex dcs0574] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0575.hex dcs0575] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0576.hex dcs0576] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0577.hex dcs0577] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0578.hex dcs0578] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0579.hex dcs0579] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0580.hex dcs0580] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0581.hex dcs0581] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0582.hex dcs0582] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0583.hex dcs0583] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0584.hex dcs0584] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0585.hex dcs0585] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0586.hex dcs0586] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0587.hex dcs0587] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0588.hex dcs0588] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0589.hex dcs0589] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0590.hex dcs0590] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0591.hex dcs0591] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0592.hex dcs0592] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0593.hex dcs0593] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0594.hex dcs0594] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0595.hex dcs0595] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0596.hex dcs0596] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0597.hex dcs0597] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0598.hex dcs0598] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0599.hex dcs0599] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0600.hex dcs0600] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0601.hex dcs0601] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0602.hex dcs0602] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0603.hex dcs0603] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0604.hex dcs0604] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0605.hex dcs0605] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0606.hex dcs0606] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0607.hex dcs0607] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0608.hex dcs0608] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0609.hex dcs0609] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0610.hex dcs0610] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0611.hex dcs0611] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0612.hex dcs0612] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0613.hex dcs0613] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0614.hex dcs0614] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0615.hex dcs0615] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0616.hex dcs0616] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0617.hex dcs0617] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0618.hex dcs0618] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0619.hex dcs0619] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0620.hex dcs0620] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0621.hex dcs0621] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0622.hex dcs0622] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0623.hex dcs0623] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0624.hex dcs0624] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0625.hex dcs0625] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0626.hex dcs0626] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0627.hex dcs0627] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0628.hex dcs0628] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0629.hex dcs0629] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0630.hex dcs0630] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0631.hex dcs0631] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0632.hex dcs0632] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0633.hex dcs0633] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0634.hex dcs0634] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0635.hex dcs0635] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0636.hex dcs0636] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0637.hex dcs0637] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0638.hex dcs0638] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0639.hex dcs0639] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0640.hex dcs0640] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0641.hex dcs0641] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0642.hex dcs0642] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0643.hex dcs0643] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0644.hex dcs0644] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0645.hex dcs0645] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0646.hex dcs0646] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0647.hex dcs0647] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0648.hex dcs0648] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0649.hex dcs0649] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0650.hex dcs0650] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0651.hex dcs0651] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0652.hex dcs0652] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0653.hex dcs0653] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0654.hex dcs0654] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0655.hex dcs0655] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0656.hex dcs0656] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0657.hex dcs0657] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0658.hex dcs0658] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0659.hex dcs0659] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0660.hex dcs0660] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0661.hex dcs0661] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0662.hex dcs0662] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0663.hex dcs0663] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0664.hex dcs0664] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0665.hex dcs0665] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0666.hex dcs0666] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0667.hex dcs0667] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0668.hex dcs0668] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0669.hex dcs0669] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0670.hex dcs0670] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0671.hex dcs0671] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0672.hex dcs0672] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0673.hex dcs0673] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0674.hex dcs0674] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0675.hex dcs0675] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0676.hex dcs0676] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0677.hex dcs0677] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0678.hex dcs0678] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0679.hex dcs0679] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0680.hex dcs0680] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0681.hex dcs0681] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0682.hex dcs0682] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0683.hex dcs0683] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0684.hex dcs0684] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0685.hex dcs0685] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0686.hex dcs0686] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0687.hex dcs0687] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0688.hex dcs0688] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0689.hex dcs0689] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0690.hex dcs0690] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0691.hex dcs0691] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0692.hex dcs0692] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0693.hex dcs0693] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0694.hex dcs0694] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0695.hex dcs0695] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0696.hex dcs0696] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0697.hex dcs0697] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0698.hex dcs0698] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0699.hex dcs0699] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0700.hex dcs0700] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0701.hex dcs0701] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0702.hex dcs0702] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0703.hex dcs0703] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0704.hex dcs0704] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0705.hex dcs0705] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0706.hex dcs0706] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0707.hex dcs0707] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0708.hex dcs0708] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0709.hex dcs0709] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0710.hex dcs0710] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0711.hex dcs0711] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0712.hex dcs0712] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0713.hex dcs0713] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0714.hex dcs0714] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0715.hex dcs0715] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0716.hex dcs0716] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0717.hex dcs0717] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0718.hex dcs0718] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0719.hex dcs0719] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0720.hex dcs0720] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0721.hex dcs0721] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0722.hex dcs0722] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0723.hex dcs0723] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0724.hex dcs0724] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0725.hex dcs0725] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0726.hex dcs0726] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0727.hex dcs0727] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0728.hex dcs0728] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0729.hex dcs0729] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0730.hex dcs0730] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0731.hex dcs0731] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0732.hex dcs0732] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0733.hex dcs0733] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0734.hex dcs0734] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0735.hex dcs0735] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0736.hex dcs0736] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0737.hex dcs0737] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0738.hex dcs0738] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0739.hex dcs0739] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0740.hex dcs0740] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0741.hex dcs0741] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0742.hex dcs0742] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0743.hex dcs0743] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0744.hex dcs0744] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0745.hex dcs0745] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0746.hex dcs0746] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0747.hex dcs0747] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0748.hex dcs0748] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0749.hex dcs0749] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0750.hex dcs0750] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0751.hex dcs0751] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0752.hex dcs0752] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0753.hex dcs0753] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0754.hex dcs0754] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0755.hex dcs0755] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0756.hex dcs0756] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0757.hex dcs0757] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0758.hex dcs0758] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0759.hex dcs0759] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0760.hex dcs0760] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0761.hex dcs0761] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0762.hex dcs0762] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0763.hex dcs0763] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0764.hex dcs0764] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0765.hex dcs0765] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0766.hex dcs0766] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0767.hex dcs0767] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0768.hex dcs0768] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0769.hex dcs0769] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0770.hex dcs0770] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0771.hex dcs0771] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0772.hex dcs0772] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0773.hex dcs0773] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0774.hex dcs0774] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0775.hex dcs0775] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0776.hex dcs0776] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0777.hex dcs0777] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0778.hex dcs0778] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0779.hex dcs0779] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0780.hex dcs0780] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0781.hex dcs0781] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0782.hex dcs0782] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0783.hex dcs0783] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0784.hex dcs0784] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0785.hex dcs0785] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0786.hex dcs0786] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0787.hex dcs0787] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0788.hex dcs0788] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0789.hex dcs0789] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0790.hex dcs0790] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0791.hex dcs0791] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0792.hex dcs0792] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0793.hex dcs0793] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0794.hex dcs0794] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0795.hex dcs0795] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0796.hex dcs0796] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0797.hex dcs0797] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0798.hex dcs0798] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0799.hex dcs0799] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0800.hex dcs0800] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0801.hex dcs0801] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0802.hex dcs0802] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0803.hex dcs0803] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0804.hex dcs0804] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0805.hex dcs0805] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0806.hex dcs0806] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0807.hex dcs0807] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0808.hex dcs0808] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0809.hex dcs0809] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0810.hex dcs0810] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0811.hex dcs0811] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0812.hex dcs0812] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0813.hex dcs0813] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0814.hex dcs0814] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0815.hex dcs0815] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0816.hex dcs0816] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0817.hex dcs0817] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0818.hex dcs0818] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0819.hex dcs0819] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0820.hex dcs0820] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0821.hex dcs0821] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0822.hex dcs0822] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0823.hex dcs0823] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0824.hex dcs0824] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0825.hex dcs0825] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0826.hex dcs0826] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0827.hex dcs0827] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0828.hex dcs0828] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0829.hex dcs0829] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0830.hex dcs0830] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0831.hex dcs0831] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0832.hex dcs0832] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0833.hex dcs0833] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0834.hex dcs0834] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0835.hex dcs0835] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0836.hex dcs0836] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0837.hex dcs0837] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0838.hex dcs0838] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0839.hex dcs0839] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0840.hex dcs0840] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0841.hex dcs0841] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0842.hex dcs0842] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0843.hex dcs0843] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0844.hex dcs0844] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0845.hex dcs0845] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0846.hex dcs0846] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0847.hex dcs0847] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0848.hex dcs0848] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0849.hex dcs0849] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0850.hex dcs0850] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0851.hex dcs0851] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0852.hex dcs0852] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0853.hex dcs0853] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0854.hex dcs0854] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0855.hex dcs0855] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0856.hex dcs0856] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0857.hex dcs0857] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0858.hex dcs0858] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0859.hex dcs0859] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0860.hex dcs0860] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0861.hex dcs0861] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0862.hex dcs0862] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0863.hex dcs0863] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0864.hex dcs0864] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0865.hex dcs0865] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0866.hex dcs0866] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0867.hex dcs0867] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0868.hex dcs0868] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0869.hex dcs0869] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0870.hex dcs0870] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0871.hex dcs0871] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0872.hex dcs0872] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0873.hex dcs0873] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0874.hex dcs0874] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0875.hex dcs0875] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0876.hex dcs0876] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0877.hex dcs0877] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0878.hex dcs0878] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0879.hex dcs0879] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0880.hex dcs0880] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0881.hex dcs0881] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0882.hex dcs0882] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0883.hex dcs0883] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0884.hex dcs0884] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0885.hex dcs0885] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0886.hex dcs0886] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0887.hex dcs0887] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0888.hex dcs0888] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0889.hex dcs0889] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0890.hex dcs0890] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0891.hex dcs0891] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0892.hex dcs0892] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0893.hex dcs0893] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0894.hex dcs0894] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0895.hex dcs0895] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0896.hex dcs0896] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0897.hex dcs0897] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0898.hex dcs0898] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0899.hex dcs0899] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0900.hex dcs0900] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0901.hex dcs0901] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0902.hex dcs0902] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0903.hex dcs0903] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0904.hex dcs0904] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0905.hex dcs0905] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0906.hex dcs0906] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0907.hex dcs0907] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0908.hex dcs0908] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0909.hex dcs0909] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0910.hex dcs0910] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0911.hex dcs0911] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0912.hex dcs0912] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0913.hex dcs0913] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0914.hex dcs0914] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0915.hex dcs0915] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0916.hex dcs0916] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0917.hex dcs0917] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0918.hex dcs0918] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0919.hex dcs0919] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0920.hex dcs0920] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0921.hex dcs0921] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0922.hex dcs0922] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0923.hex dcs0923] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0924.hex dcs0924] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0925.hex dcs0925] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0926.hex dcs0926] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0927.hex dcs0927] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0928.hex dcs0928] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0929.hex dcs0929] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0930.hex dcs0930] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0931.hex dcs0931] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0932.hex dcs0932] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0933.hex dcs0933] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0934.hex dcs0934] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0935.hex dcs0935] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0936.hex dcs0936] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0937.hex dcs0937] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0938.hex dcs0938] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0939.hex dcs0939] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0940.hex dcs0940] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0941.hex dcs0941] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0942.hex dcs0942] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0943.hex dcs0943] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0944.hex dcs0944] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0945.hex dcs0945] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0946.hex dcs0946] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0947.hex dcs0947] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0948.hex dcs0948] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0949.hex dcs0949] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0950.hex dcs0950] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0951.hex dcs0951] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0952.hex dcs0952] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0953.hex dcs0953] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0954.hex dcs0954] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0955.hex dcs0955] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0956.hex dcs0956] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0957.hex dcs0957] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0958.hex dcs0958] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0959.hex dcs0959] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0960.hex dcs0960] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0961.hex dcs0961] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0962.hex dcs0962] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0963.hex dcs0963] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0964.hex dcs0964] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0965.hex dcs0965] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0966.hex dcs0966] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0967.hex dcs0967] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0968.hex dcs0968] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0969.hex dcs0969] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0970.hex dcs0970] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0971.hex dcs0971] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0972.hex dcs0972] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0973.hex dcs0973] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0974.hex dcs0974] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0975.hex dcs0975] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0976.hex dcs0976] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0977.hex dcs0977] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0978.hex dcs0978] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0979.hex dcs0979] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0980.hex dcs0980] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0981.hex dcs0981] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0982.hex dcs0982] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0983.hex dcs0983] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0984.hex dcs0984] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0985.hex dcs0985] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0986.hex dcs0986] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0987.hex dcs0987] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0988.hex dcs0988] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0989.hex dcs0989] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0990.hex dcs0990] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0991.hex dcs0991] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0992.hex dcs0992] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0993.hex dcs0993] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0994.hex dcs0994] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0995.hex dcs0995] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0996.hex dcs0996] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0997.hex dcs0997] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0998.hex dcs0998] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0999.hex dcs0999] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1000.hex dcs1000] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1001.hex dcs1001] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1002.hex dcs1002] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1003.hex dcs1003] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1004.hex dcs1004] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1005.hex dcs1005] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1006.hex dcs1006] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1007.hex dcs1007] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1008.hex dcs1008] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1009.hex dcs1009] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1010.hex dcs1010] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1011.hex dcs1011] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1012.hex dcs1012] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1013.hex dcs1013] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1014.hex dcs1014] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1015.hex dcs1015] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1016.hex dcs1016] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1017.hex dcs1017] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1018.hex dcs1018] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1019.hex dcs1019] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1020.hex dcs1020] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1021.hex dcs1021] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1022.hex dcs1022] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1023.hex dcs1023] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1024.hex dcs1024] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1025.hex dcs1025] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1026.hex dcs1026] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1027.hex dcs1027] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1028.hex dcs1028] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1029.hex dcs1029] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1030.hex dcs1030] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1031.hex dcs1031] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1032.hex dcs1032] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1033.hex dcs1033] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1034.hex dcs1034] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1035.hex dcs1035] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1036.hex dcs1036] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1037.hex dcs1037] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1038.hex dcs1038] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1039.hex dcs1039] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1040.hex dcs1040] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1041.hex dcs1041] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1042.hex dcs1042] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1043.hex dcs1043] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1044.hex dcs1044] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1045.hex dcs1045] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1046.hex dcs1046] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1047.hex dcs1047] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1048.hex dcs1048] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1049.hex dcs1049] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1050.hex dcs1050] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1051.hex dcs1051] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1052.hex dcs1052] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1053.hex dcs1053] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1054.hex dcs1054] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1055.hex dcs1055] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1056.hex dcs1056] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1057.hex dcs1057] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1058.hex dcs1058] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1059.hex dcs1059] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1060.hex dcs1060] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1061.hex dcs1061] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1062.hex dcs1062] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1063.hex dcs1063] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1064.hex dcs1064] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1065.hex dcs1065] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1066.hex dcs1066] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1067.hex dcs1067] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1068.hex dcs1068] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1069.hex dcs1069] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1070.hex dcs1070] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1071.hex dcs1071] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1072.hex dcs1072] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1073.hex dcs1073] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1074.hex dcs1074] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1075.hex dcs1075] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1076.hex dcs1076] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1077.hex dcs1077] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1078.hex dcs1078] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1079.hex dcs1079] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1080.hex dcs1080] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1081.hex dcs1081] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1082.hex dcs1082] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1083.hex dcs1083] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1084.hex dcs1084] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1085.hex dcs1085] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1086.hex dcs1086] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1087.hex dcs1087] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1088.hex dcs1088] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1089.hex dcs1089] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1090.hex dcs1090] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1091.hex dcs1091] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1092.hex dcs1092] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1093.hex dcs1093] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1094.hex dcs1094] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1095.hex dcs1095] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1096.hex dcs1096] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1097.hex dcs1097] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1098.hex dcs1098] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1099.hex dcs1099] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1100.hex dcs1100] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1101.hex dcs1101] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1102.hex dcs1102] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1103.hex dcs1103] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1104.hex dcs1104] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1105.hex dcs1105] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1106.hex dcs1106] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1107.hex dcs1107] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1108.hex dcs1108] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1109.hex dcs1109] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1110.hex dcs1110] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1111.hex dcs1111] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1112.hex dcs1112] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1113.hex dcs1113] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1114.hex dcs1114] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1115.hex dcs1115] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1116.hex dcs1116] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1117.hex dcs1117] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1118.hex dcs1118] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1119.hex dcs1119] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1120.hex dcs1120] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1121.hex dcs1121] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1122.hex dcs1122] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1123.hex dcs1123] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1124.hex dcs1124] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1125.hex dcs1125] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1126.hex dcs1126] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1127.hex dcs1127] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1128.hex dcs1128] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1129.hex dcs1129] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1130.hex dcs1130] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1131.hex dcs1131] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1132.hex dcs1132] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1133.hex dcs1133] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1134.hex dcs1134] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1135.hex dcs1135] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1136.hex dcs1136] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1137.hex dcs1137] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1138.hex dcs1138] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1139.hex dcs1139] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1140.hex dcs1140] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1141.hex dcs1141] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1142.hex dcs1142] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1143.hex dcs1143] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1144.hex dcs1144] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1145.hex dcs1145] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1146.hex dcs1146] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1147.hex dcs1147] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1148.hex dcs1148] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1149.hex dcs1149] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1150.hex dcs1150] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1151.hex dcs1151] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1152.hex dcs1152] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1153.hex dcs1153] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1154.hex dcs1154] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1155.hex dcs1155] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1156.hex dcs1156] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1157.hex dcs1157] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1158.hex dcs1158] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1159.hex dcs1159] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1160.hex dcs1160] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1161.hex dcs1161] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1162.hex dcs1162] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1163.hex dcs1163] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1164.hex dcs1164] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1165.hex dcs1165] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1166.hex dcs1166] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1167.hex dcs1167] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1168.hex dcs1168] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1169.hex dcs1169] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1170.hex dcs1170] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1171.hex dcs1171] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1172.hex dcs1172] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1173.hex dcs1173] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1174.hex dcs1174] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1175.hex dcs1175] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1176.hex dcs1176] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1177.hex dcs1177] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1178.hex dcs1178] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1179.hex dcs1179] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1180.hex dcs1180] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1181.hex dcs1181] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1182.hex dcs1182] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1183.hex dcs1183] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1184.hex dcs1184] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1185.hex dcs1185] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1186.hex dcs1186] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1187.hex dcs1187] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1188.hex dcs1188] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1189.hex dcs1189] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1190.hex dcs1190] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1191.hex dcs1191] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1192.hex dcs1192] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1193.hex dcs1193] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1194.hex dcs1194] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1195.hex dcs1195] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1196.hex dcs1196] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1197.hex dcs1197] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1198.hex dcs1198] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1199.hex dcs1199] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1200.hex dcs1200] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1201.hex dcs1201] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1202.hex dcs1202] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1203.hex dcs1203] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1204.hex dcs1204] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1205.hex dcs1205] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1206.hex dcs1206] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1207.hex dcs1207] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1208.hex dcs1208] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1209.hex dcs1209] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1210.hex dcs1210] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1211.hex dcs1211] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1212.hex dcs1212] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1213.hex dcs1213] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1214.hex dcs1214] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1215.hex dcs1215] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1216.hex dcs1216] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1217.hex dcs1217] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1218.hex dcs1218] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1219.hex dcs1219] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1220.hex dcs1220] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1221.hex dcs1221] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1222.hex dcs1222] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1223.hex dcs1223] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1224.hex dcs1224] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1225.hex dcs1225] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1226.hex dcs1226] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1227.hex dcs1227] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1228.hex dcs1228] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1229.hex dcs1229] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1230.hex dcs1230] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1231.hex dcs1231] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1232.hex dcs1232] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1233.hex dcs1233] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1234.hex dcs1234] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1235.hex dcs1235] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1236.hex dcs1236] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1237.hex dcs1237] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1238.hex dcs1238] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1239.hex dcs1239] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1240.hex dcs1240] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1241.hex dcs1241] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1242.hex dcs1242] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1243.hex dcs1243] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1244.hex dcs1244] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1245.hex dcs1245] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1246.hex dcs1246] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1247.hex dcs1247] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1248.hex dcs1248] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1249.hex dcs1249] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1250.hex dcs1250] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1251.hex dcs1251] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1252.hex dcs1252] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1253.hex dcs1253] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1254.hex dcs1254] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1255.hex dcs1255] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1256.hex dcs1256] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1257.hex dcs1257] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1258.hex dcs1258] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1259.hex dcs1259] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1260.hex dcs1260] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1261.hex dcs1261] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1262.hex dcs1262] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1263.hex dcs1263] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1264.hex dcs1264] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1265.hex dcs1265] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1266.hex dcs1266] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1267.hex dcs1267] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1268.hex dcs1268] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1269.hex dcs1269] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1270.hex dcs1270] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1271.hex dcs1271] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1272.hex dcs1272] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1273.hex dcs1273] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1274.hex dcs1274] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1275.hex dcs1275] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1276.hex dcs1276] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1277.hex dcs1277] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1278.hex dcs1278] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1279.hex dcs1279] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1280.hex dcs1280] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1281.hex dcs1281] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1282.hex dcs1282] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1283.hex dcs1283] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1284.hex dcs1284] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1285.hex dcs1285] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1286.hex dcs1286] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1287.hex dcs1287] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1288.hex dcs1288] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1289.hex dcs1289] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1290.hex dcs1290] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1291.hex dcs1291] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1292.hex dcs1292] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1293.hex dcs1293] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1294.hex dcs1294] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1295.hex dcs1295] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1296.hex dcs1296] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1297.hex dcs1297] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1298.hex dcs1298] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1299.hex dcs1299] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1300.hex dcs1300] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1301.hex dcs1301] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1302.hex dcs1302] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1303.hex dcs1303] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1304.hex dcs1304] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1305.hex dcs1305] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1306.hex dcs1306] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1307.hex dcs1307] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1308.hex dcs1308] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1309.hex dcs1309] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1310.hex dcs1310] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1311.hex dcs1311] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1312.hex dcs1312] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1313.hex dcs1313] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1314.hex dcs1314] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1315.hex dcs1315] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1316.hex dcs1316] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1317.hex dcs1317] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1318.hex dcs1318] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1319.hex dcs1319] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1320.hex dcs1320] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1321.hex dcs1321] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1322.hex dcs1322] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1323.hex dcs1323] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1324.hex dcs1324] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1325.hex dcs1325] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1326.hex dcs1326] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1327.hex dcs1327] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1328.hex dcs1328] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1329.hex dcs1329] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1330.hex dcs1330] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1331.hex dcs1331] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1332.hex dcs1332] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1333.hex dcs1333] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1334.hex dcs1334] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1335.hex dcs1335] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1336.hex dcs1336] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1337.hex dcs1337] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1338.hex dcs1338] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1339.hex dcs1339] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1340.hex dcs1340] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1341.hex dcs1341] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1342.hex dcs1342] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1343.hex dcs1343] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1344.hex dcs1344] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1345.hex dcs1345] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1346.hex dcs1346] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1347.hex dcs1347] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1348.hex dcs1348] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1349.hex dcs1349] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1350.hex dcs1350] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1351.hex dcs1351] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1352.hex dcs1352] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1353.hex dcs1353] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1354.hex dcs1354] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1355.hex dcs1355] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1356.hex dcs1356] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1357.hex dcs1357] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1358.hex dcs1358] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1359.hex dcs1359] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1360.hex dcs1360] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1361.hex dcs1361] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1362.hex dcs1362] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1363.hex dcs1363] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1364.hex dcs1364] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1365.hex dcs1365] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1366.hex dcs1366] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1367.hex dcs1367] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1368.hex dcs1368] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1369.hex dcs1369] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1370.hex dcs1370] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1371.hex dcs1371] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1372.hex dcs1372] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1373.hex dcs1373] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1374.hex dcs1374] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1375.hex dcs1375] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1376.hex dcs1376] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1377.hex dcs1377] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1378.hex dcs1378] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1379.hex dcs1379] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1380.hex dcs1380] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1381.hex dcs1381] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1382.hex dcs1382] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1383.hex dcs1383] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1384.hex dcs1384] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1385.hex dcs1385] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1386.hex dcs1386] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1387.hex dcs1387] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1388.hex dcs1388] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1389.hex dcs1389] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1390.hex dcs1390] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1391.hex dcs1391] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1392.hex dcs1392] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1393.hex dcs1393] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1394.hex dcs1394] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1395.hex dcs1395] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1396.hex dcs1396] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1397.hex dcs1397] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1398.hex dcs1398] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1399.hex dcs1399] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1400.hex dcs1400] d7c4467c09c56e28f5b820bc579bdc2ca39aa2c3 Firmware files for boards 30 - 1400 0 400 1723 1722 2012-01-30T11:36:10Z Dfe002 7 wikitext text/x-wiki '''30 - 100'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0030.hex dcs0030] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0031.hex dcs0031] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0032.hex dcs0032] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0033.hex dcs0033] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0034.hex dcs0034] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0035.hex dcs0035] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0036.hex dcs0036] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0037.hex dcs0037] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0038.hex dcs0038] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0039.hex dcs0039]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0040.hex dcs0040] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0041.hex dcs0041] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0042.hex dcs0042] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0043.hex dcs0043] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0044.hex dcs0044] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0045.hex dcs0045] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0046.hex dcs0046] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0047.hex dcs0047] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0048.hex dcs0048] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0049.hex dcs0049]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0050.hex dcs0050] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0051.hex dcs0051] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0052.hex dcs0052] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0053.hex dcs0053] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0054.hex dcs0054] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0055.hex dcs0055] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0056.hex dcs0056] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0057.hex dcs0057] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0058.hex dcs0058] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0059.hex dcs0059]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0060.hex dcs0060] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0061.hex dcs0061] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0062.hex dcs0062] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0063.hex dcs0063] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0064.hex dcs0064] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0065.hex dcs0065] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0066.hex dcs0066] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0067.hex dcs0067] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0068.hex dcs0068] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0069.hex dcs0069]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0070.hex dcs0070] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0071.hex dcs0071] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0072.hex dcs0072] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0073.hex dcs0073] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0074.hex dcs0074] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0075.hex dcs0075] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0076.hex dcs0076] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0077.hex dcs0077] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0078.hex dcs0078] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0079.hex dcs0079]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0080.hex dcs0080] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0081.hex dcs0081] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0082.hex dcs0082] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0083.hex dcs0083] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0084.hex dcs0084] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0085.hex dcs0085] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0086.hex dcs0086] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0087.hex dcs0087] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0088.hex dcs0088] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0089.hex dcs0089]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0090.hex dcs0090] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0091.hex dcs0091] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0092.hex dcs0092] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0093.hex dcs0093] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0094.hex dcs0094] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0095.hex dcs0095] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0096.hex dcs0096] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0097.hex dcs0097] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0098.hex dcs0098] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0099.hex dcs0099]<br> '''100 - 199'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0100.hex dcs0100] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0101.hex dcs0101] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0102.hex dcs0102] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0103.hex dcs0103] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0104.hex dcs0104] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0105.hex dcs0105] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0106.hex dcs0106] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0107.hex dcs0107] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0108.hex dcs0108] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0109.hex dcs0109]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0110.hex dcs0110] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0111.hex dcs0111] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0112.hex dcs0112] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0113.hex dcs0113] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0114.hex dcs0114] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0115.hex dcs0115] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0116.hex dcs0116] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0117.hex dcs0117] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0118.hex dcs0118] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0119.hex dcs0119]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0120.hex dcs0120] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0121.hex dcs0121] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0122.hex dcs0122] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0123.hex dcs0123] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0124.hex dcs0124] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0125.hex dcs0125] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0126.hex dcs0126] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0127.hex dcs0127] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0128.hex dcs0128] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0129.hex dcs0129]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0130.hex dcs0130] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0131.hex dcs0131] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0132.hex dcs0132] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0133.hex dcs0133] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0134.hex dcs0134] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0135.hex dcs0135] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0136.hex dcs0136] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0137.hex dcs0137] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0138.hex dcs0138] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0139.hex dcs0139]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0140.hex dcs0140] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0141.hex dcs0141] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0142.hex dcs0142] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0143.hex dcs0143] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0144.hex dcs0144] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0145.hex dcs0145] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0146.hex dcs0146] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0147.hex dcs0147] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0148.hex dcs0148] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0149.hex dcs0149]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0150.hex dcs0150] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0151.hex dcs0151] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0152.hex dcs0152] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0153.hex dcs0153] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0154.hex dcs0154] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0155.hex dcs0155] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0156.hex dcs0156] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0157.hex dcs0157] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0158.hex dcs0158] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0159.hex dcs0159]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0160.hex dcs0160] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0161.hex dcs0161] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0162.hex dcs0162] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0163.hex dcs0163] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0164.hex dcs0164] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0165.hex dcs0165] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0166.hex dcs0166] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0167.hex dcs0167] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0168.hex dcs0168] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0169.hex dcs0169]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0170.hex dcs0170] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0171.hex dcs0171] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0172.hex dcs0172] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0173.hex dcs0173] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0174.hex dcs0174] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0175.hex dcs0175] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0176.hex dcs0176] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0177.hex dcs0177] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0178.hex dcs0178] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0179.hex dcs0179]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0180.hex dcs0180] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0181.hex dcs0181] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0182.hex dcs0182] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0183.hex dcs0183] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0184.hex dcs0184] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0185.hex dcs0185] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0186.hex dcs0186] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0187.hex dcs0187] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0188.hex dcs0188] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0189.hex dcs0189]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0190.hex dcs0190] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0191.hex dcs0191] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0192.hex dcs0192] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0193.hex dcs0193] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0194.hex dcs0194] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0195.hex dcs0195] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0196.hex dcs0196] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0197.hex dcs0197] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0198.hex dcs0198] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0199.hex dcs0199]<br> '''200 - 299'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0200.hex dcs0200] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0201.hex dcs0201] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0202.hex dcs0202] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0203.hex dcs0203] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0204.hex dcs0204] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0205.hex dcs0205] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0206.hex dcs0206] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0207.hex dcs0207] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0208.hex dcs0208] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0209.hex dcs0209]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0210.hex dcs0210] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0211.hex dcs0211] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0212.hex dcs0212] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0213.hex dcs0213] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0214.hex dcs0214] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0215.hex dcs0215] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0216.hex dcs0216] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0217.hex dcs0217] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0218.hex dcs0218] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0219.hex dcs0219]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0220.hex dcs0220] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0221.hex dcs0221] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0222.hex dcs0222] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0223.hex dcs0223] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0224.hex dcs0224] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0225.hex dcs0225] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0226.hex dcs0226] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0227.hex dcs0227] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0228.hex dcs0228] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0229.hex dcs0229]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0230.hex dcs0230] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0231.hex dcs0231] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0232.hex dcs0232] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0233.hex dcs0233] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0234.hex dcs0234] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0235.hex dcs0235] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0236.hex dcs0236] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0237.hex dcs0237] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0238.hex dcs0238] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0239.hex dcs0239]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0240.hex dcs0240] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0241.hex dcs0241] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0242.hex dcs0242] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0243.hex dcs0243] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0244.hex dcs0244] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0245.hex dcs0245] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0246.hex dcs0246] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0247.hex dcs0247] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0248.hex dcs0248] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0249.hex dcs0249]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0250.hex dcs0250] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0251.hex dcs0251] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0252.hex dcs0252] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0253.hex dcs0253] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0254.hex dcs0254] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0255.hex dcs0255] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0256.hex dcs0256] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0257.hex dcs0257] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0258.hex dcs0258] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0259.hex dcs0259]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0260.hex dcs0260] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0261.hex dcs0261] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0262.hex dcs0262] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0263.hex dcs0263] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0264.hex dcs0264] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0265.hex dcs0265] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0266.hex dcs0266] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0267.hex dcs0267] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0268.hex dcs0268] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0269.hex dcs0269]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0270.hex dcs0270] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0271.hex dcs0271] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0272.hex dcs0272] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0273.hex dcs0273] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0274.hex dcs0274] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0275.hex dcs0275] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0276.hex dcs0276] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0277.hex dcs0277] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0278.hex dcs0278] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0279.hex dcs0279]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0280.hex dcs0280] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0281.hex dcs0281] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0282.hex dcs0282] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0283.hex dcs0283] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0284.hex dcs0284] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0285.hex dcs0285] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0286.hex dcs0286] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0287.hex dcs0287] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0288.hex dcs0288] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0289.hex dcs0289]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0290.hex dcs0290] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0291.hex dcs0291] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0292.hex dcs0292] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0293.hex dcs0293] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0294.hex dcs0294] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0295.hex dcs0295] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0296.hex dcs0296] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0297.hex dcs0297] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0298.hex dcs0298] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0299.hex dcs0299]<br> '''300 - 399'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0300.hex dcs0300] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0301.hex dcs0301] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0302.hex dcs0302] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0303.hex dcs0303] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0304.hex dcs0304] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0305.hex dcs0305] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0306.hex dcs0306] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0307.hex dcs0307] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0308.hex dcs0308] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0309.hex dcs0309]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0310.hex dcs0310] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0311.hex dcs0311] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0312.hex dcs0312] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0313.hex dcs0313] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0314.hex dcs0314] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0315.hex dcs0315] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0316.hex dcs0316] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0317.hex dcs0317] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0318.hex dcs0318] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0319.hex dcs0319]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0320.hex dcs0320] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0321.hex dcs0321] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0322.hex dcs0322] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0323.hex dcs0323] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0324.hex dcs0324] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0325.hex dcs0325] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0326.hex dcs0326] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0327.hex dcs0327] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0328.hex dcs0328] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0329.hex dcs0329]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0330.hex dcs0330] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0331.hex dcs0331] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0332.hex dcs0332] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0333.hex dcs0333] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0334.hex dcs0334] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0335.hex dcs0335] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0336.hex dcs0336] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0337.hex dcs0337] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0338.hex dcs0338] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0339.hex dcs0339]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0340.hex dcs0340] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0341.hex dcs0341] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0342.hex dcs0342] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0343.hex dcs0343] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0344.hex dcs0344] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0345.hex dcs0345] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0346.hex dcs0346] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0347.hex dcs0347] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0348.hex dcs0348] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0349.hex dcs0349]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0350.hex dcs0350] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0351.hex dcs0351] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0352.hex dcs0352] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0353.hex dcs0353] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0354.hex dcs0354] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0355.hex dcs0355] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0356.hex dcs0356] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0357.hex dcs0357] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0358.hex dcs0358] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0359.hex dcs0359]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0360.hex dcs0360] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0361.hex dcs0361] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0362.hex dcs0362] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0363.hex dcs0363] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0364.hex dcs0364] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0365.hex dcs0365] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0366.hex dcs0366] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0367.hex dcs0367] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0368.hex dcs0368] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0369.hex dcs0369]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0370.hex dcs0370] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0371.hex dcs0371] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0372.hex dcs0372] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0373.hex dcs0373] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0374.hex dcs0374] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0375.hex dcs0375] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0376.hex dcs0376] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0377.hex dcs0377] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0378.hex dcs0378] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0379.hex dcs0379]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0380.hex dcs0380] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0381.hex dcs0381] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0382.hex dcs0382] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0383.hex dcs0383] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0384.hex dcs0384] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0385.hex dcs0385] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0386.hex dcs0386] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0387.hex dcs0387] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0388.hex dcs0388] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0389.hex dcs0389]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0390.hex dcs0390] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0391.hex dcs0391] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0392.hex dcs0392] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0393.hex dcs0393] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0394.hex dcs0394] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0395.hex dcs0395] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0396.hex dcs0396] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0397.hex dcs0397] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0398.hex dcs0398] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0399.hex dcs0399]<br> '''400 - 499'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0400.hex dcs0400] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0401.hex dcs0401] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0402.hex dcs0402] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0403.hex dcs0403] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0404.hex dcs0404] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0405.hex dcs0405] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0406.hex dcs0406] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0407.hex dcs0407] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0408.hex dcs0408] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0409.hex dcs0409]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0410.hex dcs0410] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0411.hex dcs0411] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0412.hex dcs0412] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0413.hex dcs0413] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0414.hex dcs0414] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0415.hex dcs0415] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0416.hex dcs0416] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0417.hex dcs0417] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0418.hex dcs0418] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0419.hex dcs0419]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0420.hex dcs0420] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0421.hex dcs0421] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0422.hex dcs0422] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0423.hex dcs0423] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0424.hex dcs0424] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0425.hex dcs0425] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0426.hex dcs0426] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0427.hex dcs0427] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0428.hex dcs0428] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0429.hex dcs0429]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0430.hex dcs0430] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0431.hex dcs0431] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0432.hex dcs0432] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0433.hex dcs0433] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0434.hex dcs0434] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0435.hex dcs0435] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0436.hex dcs0436] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0437.hex dcs0437] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0438.hex dcs0438] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0439.hex dcs0439]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0440.hex dcs0440] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0441.hex dcs0441] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0442.hex dcs0442] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0443.hex dcs0443] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0444.hex dcs0444] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0445.hex dcs0445] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0446.hex dcs0446] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0447.hex dcs0447] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0448.hex dcs0448] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0449.hex dcs0449]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0450.hex dcs0450] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0451.hex dcs0451] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0452.hex dcs0452] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0453.hex dcs0453] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0454.hex dcs0454] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0455.hex dcs0455] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0456.hex dcs0456] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0457.hex dcs0457] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0458.hex dcs0458] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0459.hex dcs0459]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0460.hex dcs0460] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0461.hex dcs0461] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0462.hex dcs0462] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0463.hex dcs0463] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0464.hex dcs0464] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0465.hex dcs0465] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0466.hex dcs0466] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0467.hex dcs0467] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0468.hex dcs0468] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0469.hex dcs0469]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0470.hex dcs0470] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0471.hex dcs0471] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0472.hex dcs0472] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0473.hex dcs0473] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0474.hex dcs0474] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0475.hex dcs0475] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0476.hex dcs0476] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0477.hex dcs0477] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0478.hex dcs0478] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0479.hex dcs0479]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0480.hex dcs0480] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0481.hex dcs0481] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0482.hex dcs0482] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0483.hex dcs0483] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0484.hex dcs0484] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0485.hex dcs0485] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0486.hex dcs0486] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0487.hex dcs0487] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0488.hex dcs0488] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0489.hex dcs0489]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0490.hex dcs0490] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0491.hex dcs0491] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0492.hex dcs0492] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0493.hex dcs0493] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0494.hex dcs0494] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0495.hex dcs0495] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0496.hex dcs0496] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0497.hex dcs0497] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0498.hex dcs0498] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0499.hex dcs0499]<br> '''500 - 599'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0500.hex dcs0500] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0501.hex dcs0501] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0502.hex dcs0502] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0503.hex dcs0503] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0504.hex dcs0504] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0505.hex dcs0505] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0506.hex dcs0506] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0507.hex dcs0507] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0508.hex dcs0508] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0509.hex dcs0509]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0510.hex dcs0510] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0511.hex dcs0511] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0512.hex dcs0512] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0513.hex dcs0513] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0514.hex dcs0514] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0515.hex dcs0515] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0516.hex dcs0516] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0517.hex dcs0517] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0518.hex dcs0518] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0519.hex dcs0519]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0520.hex dcs0520] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0521.hex dcs0521] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0522.hex dcs0522] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0523.hex dcs0523] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0524.hex dcs0524] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0525.hex dcs0525] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0526.hex dcs0526] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0527.hex dcs0527] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0528.hex dcs0528] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0529.hex dcs0529]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0530.hex dcs0530] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0531.hex dcs0531] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0532.hex dcs0532] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0533.hex dcs0533] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0534.hex dcs0534] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0535.hex dcs0535] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0536.hex dcs0536] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0537.hex dcs0537] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0538.hex dcs0538] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0539.hex dcs0539]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0540.hex dcs0540] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0541.hex dcs0541] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0542.hex dcs0542] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0543.hex dcs0543] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0544.hex dcs0544] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0545.hex dcs0545] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0546.hex dcs0546] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0547.hex dcs0547] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0548.hex dcs0548] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0549.hex dcs0549]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0550.hex dcs0550] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0551.hex dcs0551] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0552.hex dcs0552] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0553.hex dcs0553] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0554.hex dcs0554] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0555.hex dcs0555] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0556.hex dcs0556] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0557.hex dcs0557] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0558.hex dcs0558] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0559.hex dcs0559]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0560.hex dcs0560] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0561.hex dcs0561] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0562.hex dcs0562] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0563.hex dcs0563] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0564.hex dcs0564] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0565.hex dcs0565] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0566.hex dcs0566] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0567.hex dcs0567] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0568.hex dcs0568] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0569.hex dcs0569]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0570.hex dcs0570] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0571.hex dcs0571] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0572.hex dcs0572] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0573.hex dcs0573] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0574.hex dcs0574] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0575.hex dcs0575] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0576.hex dcs0576] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0577.hex dcs0577] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0578.hex dcs0578] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0579.hex dcs0579]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0580.hex dcs0580] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0581.hex dcs0581] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0582.hex dcs0582] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0583.hex dcs0583] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0584.hex dcs0584] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0585.hex dcs0585] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0586.hex dcs0586] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0587.hex dcs0587] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0588.hex dcs0588] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0589.hex dcs0589]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0590.hex dcs0590] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0591.hex dcs0591] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0592.hex dcs0592] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0593.hex dcs0593] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0594.hex dcs0594] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0595.hex dcs0595] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0596.hex dcs0596] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0597.hex dcs0597] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0598.hex dcs0598] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0599.hex dcs0599]<br> '''600 - 699'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0600.hex dcs0600] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0601.hex dcs0601] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0602.hex dcs0602] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0603.hex dcs0603] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0604.hex dcs0604] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0605.hex dcs0605] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0606.hex dcs0606] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0607.hex dcs0607] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0608.hex dcs0608] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0609.hex dcs0609]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0610.hex dcs0610] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0611.hex dcs0611] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0612.hex dcs0612] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0613.hex dcs0613] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0614.hex dcs0614] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0615.hex dcs0615] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0616.hex dcs0616] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0617.hex dcs0617] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0618.hex dcs0618] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0619.hex dcs0619]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0620.hex dcs0620] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0621.hex dcs0621] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0622.hex dcs0622] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0623.hex dcs0623] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0624.hex dcs0624] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0625.hex dcs0625] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0626.hex dcs0626] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0627.hex dcs0627] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0628.hex dcs0628] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0629.hex dcs0629]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0630.hex dcs0630] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0631.hex dcs0631] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0632.hex dcs0632] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0633.hex dcs0633] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0634.hex dcs0634] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0635.hex dcs0635] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0636.hex dcs0636] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0637.hex dcs0637] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0638.hex dcs0638] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0639.hex dcs0639]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0640.hex dcs0640] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0641.hex dcs0641] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0642.hex dcs0642] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0643.hex dcs0643] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0644.hex dcs0644] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0645.hex dcs0645] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0646.hex dcs0646] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0647.hex dcs0647] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0648.hex dcs0648] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0649.hex dcs0649]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0650.hex dcs0650] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0651.hex dcs0651] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0652.hex dcs0652] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0653.hex dcs0653] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0654.hex dcs0654] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0655.hex dcs0655] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0656.hex dcs0656] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0657.hex dcs0657] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0658.hex dcs0658] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0659.hex dcs0659]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0660.hex dcs0660] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0661.hex dcs0661] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0662.hex dcs0662] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0663.hex dcs0663] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0664.hex dcs0664] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0665.hex dcs0665] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0666.hex dcs0666] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0667.hex dcs0667] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0668.hex dcs0668] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0669.hex dcs0669]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0670.hex dcs0670] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0671.hex dcs0671] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0672.hex dcs0672] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0673.hex dcs0673] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0674.hex dcs0674] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0675.hex dcs0675] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0676.hex dcs0676] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0677.hex dcs0677] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0678.hex dcs0678] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0679.hex dcs0679]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0680.hex dcs0680] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0681.hex dcs0681] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0682.hex dcs0682] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0683.hex dcs0683] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0684.hex dcs0684] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0685.hex dcs0685] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0686.hex dcs0686] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0687.hex dcs0687] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0688.hex dcs0688] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0689.hex dcs0689]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0690.hex dcs0690] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0691.hex dcs0691] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0692.hex dcs0692] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0693.hex dcs0693] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0694.hex dcs0694] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0695.hex dcs0695] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0696.hex dcs0696] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0697.hex dcs0697] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0698.hex dcs0698] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0699.hex dcs0699]<br> '''700 - 799'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0700.hex dcs0700] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0701.hex dcs0701] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0702.hex dcs0702] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0703.hex dcs0703] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0704.hex dcs0704] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0705.hex dcs0705] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0706.hex dcs0706] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0707.hex dcs0707] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0708.hex dcs0708] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0709.hex dcs0709]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0710.hex dcs0710] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0711.hex dcs0711] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0712.hex dcs0712] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0713.hex dcs0713] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0714.hex dcs0714] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0715.hex dcs0715] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0716.hex dcs0716] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0717.hex dcs0717] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0718.hex dcs0718] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0719.hex dcs0719]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0720.hex dcs0720] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0721.hex dcs0721] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0722.hex dcs0722] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0723.hex dcs0723] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0724.hex dcs0724] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0725.hex dcs0725] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0726.hex dcs0726] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0727.hex dcs0727] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0728.hex dcs0728] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0729.hex dcs0729]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0730.hex dcs0730] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0731.hex dcs0731] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0732.hex dcs0732] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0733.hex dcs0733] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0734.hex dcs0734] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0735.hex dcs0735] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0736.hex dcs0736] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0737.hex dcs0737] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0738.hex dcs0738] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0739.hex dcs0739]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0740.hex dcs0740] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0741.hex dcs0741] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0742.hex dcs0742] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0743.hex dcs0743] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0744.hex dcs0744] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0745.hex dcs0745] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0746.hex dcs0746] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0747.hex dcs0747] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0748.hex dcs0748] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0749.hex dcs0749]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0750.hex dcs0750] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0751.hex dcs0751] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0752.hex dcs0752] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0753.hex dcs0753] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0754.hex dcs0754] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0755.hex dcs0755] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0756.hex dcs0756] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0757.hex dcs0757] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0758.hex dcs0758] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0759.hex dcs0759]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0760.hex dcs0760] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0761.hex dcs0761] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0762.hex dcs0762] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0763.hex dcs0763] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0764.hex dcs0764] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0765.hex dcs0765] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0766.hex dcs0766] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0767.hex dcs0767] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0768.hex dcs0768] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0769.hex dcs0769]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0770.hex dcs0770] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0771.hex dcs0771] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0772.hex dcs0772] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0773.hex dcs0773] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0774.hex dcs0774] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0775.hex dcs0775] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0776.hex dcs0776] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0777.hex dcs0777] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0778.hex dcs0778] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0779.hex dcs0779]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0780.hex dcs0780] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0781.hex dcs0781] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0782.hex dcs0782] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0783.hex dcs0783] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0784.hex dcs0784] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0785.hex dcs0785] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0786.hex dcs0786] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0787.hex dcs0787] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0788.hex dcs0788] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0789.hex dcs0789]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0790.hex dcs0790] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0791.hex dcs0791] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0792.hex dcs0792] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0793.hex dcs0793] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0794.hex dcs0794] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0795.hex dcs0795] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0796.hex dcs0796] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0797.hex dcs0797] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0798.hex dcs0798] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0799.hex dcs0799]<br> '''800 - 899'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0800.hex dcs0800] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0801.hex dcs0801] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0802.hex dcs0802] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0803.hex dcs0803] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0804.hex dcs0804] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0805.hex dcs0805] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0806.hex dcs0806] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0807.hex dcs0807] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0808.hex dcs0808] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0809.hex dcs0809]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0810.hex dcs0810] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0811.hex dcs0811] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0812.hex dcs0812] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0813.hex dcs0813] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0814.hex dcs0814] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0815.hex dcs0815] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0816.hex dcs0816] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0817.hex dcs0817] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0818.hex dcs0818] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0819.hex dcs0819]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0820.hex dcs0820] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0821.hex dcs0821] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0822.hex dcs0822] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0823.hex dcs0823] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0824.hex dcs0824] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0825.hex dcs0825] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0826.hex dcs0826] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0827.hex dcs0827] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0828.hex dcs0828] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0829.hex dcs0829]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0830.hex dcs0830] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0831.hex dcs0831] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0832.hex dcs0832] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0833.hex dcs0833] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0834.hex dcs0834] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0835.hex dcs0835] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0836.hex dcs0836] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0837.hex dcs0837] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0838.hex dcs0838] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0839.hex dcs0839]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0840.hex dcs0840] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0841.hex dcs0841] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0842.hex dcs0842] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0843.hex dcs0843] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0844.hex dcs0844] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0845.hex dcs0845] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0846.hex dcs0846] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0847.hex dcs0847] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0848.hex dcs0848] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0849.hex dcs0849]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0850.hex dcs0850] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0851.hex dcs0851] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0852.hex dcs0852] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0853.hex dcs0853] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0854.hex dcs0854] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0855.hex dcs0855] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0856.hex dcs0856] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0857.hex dcs0857] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0858.hex dcs0858] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0859.hex dcs0859]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0860.hex dcs0860] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0861.hex dcs0861] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0862.hex dcs0862] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0863.hex dcs0863] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0864.hex dcs0864] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0865.hex dcs0865] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0866.hex dcs0866] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0867.hex dcs0867] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0868.hex dcs0868] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0869.hex dcs0869]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0870.hex dcs0870] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0871.hex dcs0871] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0872.hex dcs0872] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0873.hex dcs0873] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0874.hex dcs0874] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0875.hex dcs0875] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0876.hex dcs0876] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0877.hex dcs0877] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0878.hex dcs0878] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0879.hex dcs0879]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0880.hex dcs0880] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0881.hex dcs0881] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0882.hex dcs0882] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0883.hex dcs0883] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0884.hex dcs0884] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0885.hex dcs0885] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0886.hex dcs0886] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0887.hex dcs0887] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0888.hex dcs0888] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0889.hex dcs0889]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0890.hex dcs0890] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0891.hex dcs0891] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0892.hex dcs0892] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0893.hex dcs0893] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0894.hex dcs0894] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0895.hex dcs0895] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0896.hex dcs0896] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0897.hex dcs0897] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0898.hex dcs0898] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0899.hex dcs0899]<br> '''900 - 999'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0900.hex dcs0900] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0901.hex dcs0901] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0902.hex dcs0902] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0903.hex dcs0903] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0904.hex dcs0904] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0905.hex dcs0905] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0906.hex dcs0906] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0907.hex dcs0907] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0908.hex dcs0908] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0909.hex dcs0909]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0910.hex dcs0910] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0911.hex dcs0911] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0912.hex dcs0912] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0913.hex dcs0913] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0914.hex dcs0914] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0915.hex dcs0915] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0916.hex dcs0916] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0917.hex dcs0917] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0918.hex dcs0918] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0919.hex dcs0919]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0920.hex dcs0920] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0921.hex dcs0921] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0922.hex dcs0922] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0923.hex dcs0923] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0924.hex dcs0924] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0925.hex dcs0925] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0926.hex dcs0926] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0927.hex dcs0927] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0928.hex dcs0928] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0929.hex dcs0929]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0930.hex dcs0930] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0931.hex dcs0931] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0932.hex dcs0932] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0933.hex dcs0933] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0934.hex dcs0934] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0935.hex dcs0935] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0936.hex dcs0936] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0937.hex dcs0937] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0938.hex dcs0938] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0939.hex dcs0939]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0940.hex dcs0940] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0941.hex dcs0941] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0942.hex dcs0942] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0943.hex dcs0943] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0944.hex dcs0944] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0945.hex dcs0945] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0946.hex dcs0946] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0947.hex dcs0947] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0948.hex dcs0948] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0949.hex dcs0949]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0950.hex dcs0950] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0951.hex dcs0951] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0952.hex dcs0952] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0953.hex dcs0953] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0954.hex dcs0954] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0955.hex dcs0955] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0956.hex dcs0956] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0957.hex dcs0957] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0958.hex dcs0958] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0959.hex dcs0959]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0960.hex dcs0960] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0961.hex dcs0961] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0962.hex dcs0962] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0963.hex dcs0963] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0964.hex dcs0964] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0965.hex dcs0965] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0966.hex dcs0966] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0967.hex dcs0967] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0968.hex dcs0968] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0969.hex dcs0969]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0970.hex dcs0970] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0971.hex dcs0971] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0972.hex dcs0972] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0973.hex dcs0973] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0974.hex dcs0974] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0975.hex dcs0975] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0976.hex dcs0976] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0977.hex dcs0977] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0978.hex dcs0978] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0979.hex dcs0979]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0980.hex dcs0980] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0981.hex dcs0981] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0982.hex dcs0982] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0983.hex dcs0983] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0984.hex dcs0984] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0985.hex dcs0985] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0986.hex dcs0986] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0987.hex dcs0987] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0988.hex dcs0988] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0989.hex dcs0989]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0990.hex dcs0990] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0991.hex dcs0991] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0992.hex dcs0992] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0993.hex dcs0993] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0994.hex dcs0994] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0995.hex dcs0995] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0996.hex dcs0996] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0997.hex dcs0997] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0998.hex dcs0998] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0999.hex dcs0999]<br> '''1000 - 1099'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1000.hex dcs1000] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1001.hex dcs1001] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1002.hex dcs1002] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1003.hex dcs1003] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1004.hex dcs1004] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1005.hex dcs1005] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1006.hex dcs1006] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1007.hex dcs1007] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1008.hex dcs1008] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1009.hex dcs1009]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1010.hex dcs1010] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1011.hex dcs1011] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1012.hex dcs1012] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1013.hex dcs1013] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1014.hex dcs1014] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1015.hex dcs1015] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1016.hex dcs1016] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1017.hex dcs1017] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1018.hex dcs1018] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1019.hex dcs1019]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1020.hex dcs1020] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1021.hex dcs1021] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1022.hex dcs1022] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1023.hex dcs1023] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1024.hex dcs1024] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1025.hex dcs1025] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1026.hex dcs1026] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1027.hex dcs1027] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1028.hex dcs1028] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1029.hex dcs1029]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1030.hex dcs1030] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1031.hex dcs1031] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1032.hex dcs1032] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1033.hex dcs1033] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1034.hex dcs1034] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1035.hex dcs1035] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1036.hex dcs1036] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1037.hex dcs1037] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1038.hex dcs1038] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1039.hex dcs1039]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1040.hex dcs1040] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1041.hex dcs1041] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1042.hex dcs1042] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1043.hex dcs1043] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1044.hex dcs1044] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1045.hex dcs1045] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1046.hex dcs1046] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1047.hex dcs1047] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1048.hex dcs1048] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1049.hex dcs1049]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1050.hex dcs1050] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1051.hex dcs1051] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1052.hex dcs1052] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1053.hex dcs1053] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1054.hex dcs1054] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1055.hex dcs1055] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1056.hex dcs1056] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1057.hex dcs1057] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1058.hex dcs1058] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1059.hex dcs1059]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1060.hex dcs1060] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1061.hex dcs1061] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1062.hex dcs1062] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1063.hex dcs1063] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1064.hex dcs1064] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1065.hex dcs1065] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1066.hex dcs1066] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1067.hex dcs1067] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1068.hex dcs1068] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1069.hex dcs1069]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1070.hex dcs1070] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1071.hex dcs1071] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1072.hex dcs1072] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1073.hex dcs1073] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1074.hex dcs1074] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1075.hex dcs1075] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1076.hex dcs1076] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1077.hex dcs1077] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1078.hex dcs1078] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1079.hex dcs1079]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1080.hex dcs1080] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1081.hex dcs1081] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1082.hex dcs1082] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1083.hex dcs1083] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1084.hex dcs1084] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1085.hex dcs1085] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1086.hex dcs1086] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1087.hex dcs1087] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1088.hex dcs1088] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1089.hex dcs1089]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1090.hex dcs1090] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1091.hex dcs1091] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1092.hex dcs1092] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1093.hex dcs1093] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1094.hex dcs1094] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1095.hex dcs1095] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1096.hex dcs1096] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1097.hex dcs1097] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1098.hex dcs1098] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1099.hex dcs1099]<br> '''1100 - 1199'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1100.hex dcs1100] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1101.hex dcs1101] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1102.hex dcs1102] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1103.hex dcs1103] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1104.hex dcs1104] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1105.hex dcs1105] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1106.hex dcs1106] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1107.hex dcs1107] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1108.hex dcs1108] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1109.hex dcs1109]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1110.hex dcs1110] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1111.hex dcs1111] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1112.hex dcs1112] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1113.hex dcs1113] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1114.hex dcs1114] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1115.hex dcs1115] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1116.hex dcs1116] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1117.hex dcs1117] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1118.hex dcs1118] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1119.hex dcs1119]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1120.hex dcs1120] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1121.hex dcs1121] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1122.hex dcs1122] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1123.hex dcs1123] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1124.hex dcs1124] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1125.hex dcs1125] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1126.hex dcs1126] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1127.hex dcs1127] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1128.hex dcs1128] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1129.hex dcs1129]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1130.hex dcs1130] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1131.hex dcs1131] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1132.hex dcs1132] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1133.hex dcs1133] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1134.hex dcs1134] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1135.hex dcs1135] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1136.hex dcs1136] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1137.hex dcs1137] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1138.hex dcs1138] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1139.hex dcs1139]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1140.hex dcs1140] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1141.hex dcs1141] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1142.hex dcs1142] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1143.hex dcs1143] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1144.hex dcs1144] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1145.hex dcs1145] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1146.hex dcs1146] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1147.hex dcs1147] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1148.hex dcs1148] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1149.hex dcs1149]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1150.hex dcs1150] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1151.hex dcs1151] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1152.hex dcs1152] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1153.hex dcs1153] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1154.hex dcs1154] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1155.hex dcs1155] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1156.hex dcs1156] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1157.hex dcs1157] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1158.hex dcs1158] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1159.hex dcs1159]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1160.hex dcs1160] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1161.hex dcs1161] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1162.hex dcs1162] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1163.hex dcs1163] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1164.hex dcs1164] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1165.hex dcs1165] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1166.hex dcs1166] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1167.hex dcs1167] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1168.hex dcs1168] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1169.hex dcs1169]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1170.hex dcs1170] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1171.hex dcs1171] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1172.hex dcs1172] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1173.hex dcs1173] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1174.hex dcs1174] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1175.hex dcs1175] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1176.hex dcs1176] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1177.hex dcs1177] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1178.hex dcs1178] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1179.hex dcs1179]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1180.hex dcs1180] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1181.hex dcs1181] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1182.hex dcs1182] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1183.hex dcs1183] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1184.hex dcs1184] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1185.hex dcs1185] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1186.hex dcs1186] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1187.hex dcs1187] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1188.hex dcs1188] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1189.hex dcs1189]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1190.hex dcs1190] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1191.hex dcs1191] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1192.hex dcs1192] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1193.hex dcs1193] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1194.hex dcs1194] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1195.hex dcs1195] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1196.hex dcs1196] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1197.hex dcs1197] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1198.hex dcs1198] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1199.hex dcs1199]<br> '''1200 - 1299'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1200.hex dcs1200] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1201.hex dcs1201] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1202.hex dcs1202] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1203.hex dcs1203] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1204.hex dcs1204] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1205.hex dcs1205] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1206.hex dcs1206] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1207.hex dcs1207] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1208.hex dcs1208] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1209.hex dcs1209]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1210.hex dcs1210] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1211.hex dcs1211] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1212.hex dcs1212] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1213.hex dcs1213] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1214.hex dcs1214] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1215.hex dcs1215] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1216.hex dcs1216] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1217.hex dcs1217] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1218.hex dcs1218] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1219.hex dcs1219]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1220.hex dcs1220] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1221.hex dcs1221] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1222.hex dcs1222] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1223.hex dcs1223] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1224.hex dcs1224] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1225.hex dcs1225] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1226.hex dcs1226] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1227.hex dcs1227] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1228.hex dcs1228] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1229.hex dcs1229]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1230.hex dcs1230] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1231.hex dcs1231] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1232.hex dcs1232] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1233.hex dcs1233] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1234.hex dcs1234] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1235.hex dcs1235] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1236.hex dcs1236] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1237.hex dcs1237] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1238.hex dcs1238] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1239.hex dcs1239]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1240.hex dcs1240] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1241.hex dcs1241] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1242.hex dcs1242] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1243.hex dcs1243] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1244.hex dcs1244] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1245.hex dcs1245] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1246.hex dcs1246] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1247.hex dcs1247] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1248.hex dcs1248] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1249.hex dcs1249]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1250.hex dcs1250] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1251.hex dcs1251] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1252.hex dcs1252] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1253.hex dcs1253] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1254.hex dcs1254] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1255.hex dcs1255] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1256.hex dcs1256] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1257.hex dcs1257] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1258.hex dcs1258] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1259.hex dcs1259]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1260.hex dcs1260] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1261.hex dcs1261] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1262.hex dcs1262] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1263.hex dcs1263] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1264.hex dcs1264] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1265.hex dcs1265] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1266.hex dcs1266] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1267.hex dcs1267] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1268.hex dcs1268] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1269.hex dcs1269]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1270.hex dcs1270] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1271.hex dcs1271] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1272.hex dcs1272] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1273.hex dcs1273] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1274.hex dcs1274] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1275.hex dcs1275] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1276.hex dcs1276] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1277.hex dcs1277] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1278.hex dcs1278] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1279.hex dcs1279]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1280.hex dcs1280] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1281.hex dcs1281] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1282.hex dcs1282] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1283.hex dcs1283] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1284.hex dcs1284] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1285.hex dcs1285] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1286.hex dcs1286] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1287.hex dcs1287] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1288.hex dcs1288] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1289.hex dcs1289]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1290.hex dcs1290] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1291.hex dcs1291] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1292.hex dcs1292] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1293.hex dcs1293] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1294.hex dcs1294] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1295.hex dcs1295] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1296.hex dcs1296] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1297.hex dcs1297] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1298.hex dcs1298] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1299.hex dcs1299]<br> '''1300 - 1399'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1300.hex dcs1300] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1301.hex dcs1301] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1302.hex dcs1302] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1303.hex dcs1303] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1304.hex dcs1304] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1305.hex dcs1305] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1306.hex dcs1306] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1307.hex dcs1307] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1308.hex dcs1308] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1309.hex dcs1309]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1310.hex dcs1310] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1311.hex dcs1311] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1312.hex dcs1312] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1313.hex dcs1313] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1314.hex dcs1314] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1315.hex dcs1315] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1316.hex dcs1316] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1317.hex dcs1317] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1318.hex dcs1318] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1319.hex dcs1319]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1320.hex dcs1320] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1321.hex dcs1321] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1322.hex dcs1322] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1323.hex dcs1323] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1324.hex dcs1324] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1325.hex dcs1325] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1326.hex dcs1326] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1327.hex dcs1327] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1328.hex dcs1328] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1329.hex dcs1329]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1330.hex dcs1330] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1331.hex dcs1331] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1332.hex dcs1332] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1333.hex dcs1333] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1334.hex dcs1334] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1335.hex dcs1335] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1336.hex dcs1336] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1337.hex dcs1337] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1338.hex dcs1338] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1339.hex dcs1339]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1340.hex dcs1340] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1341.hex dcs1341] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1342.hex dcs1342] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1343.hex dcs1343] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1344.hex dcs1344] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1345.hex dcs1345] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1346.hex dcs1346] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1347.hex dcs1347] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1348.hex dcs1348] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1349.hex dcs1349]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1350.hex dcs1350] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1351.hex dcs1351] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1352.hex dcs1352] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1353.hex dcs1353] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1354.hex dcs1354] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1355.hex dcs1355] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1356.hex dcs1356] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1357.hex dcs1357] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1358.hex dcs1358] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1359.hex dcs1359]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1360.hex dcs1360] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1361.hex dcs1361] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1362.hex dcs1362] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1363.hex dcs1363] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1364.hex dcs1364] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1365.hex dcs1365] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1366.hex dcs1366] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1367.hex dcs1367] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1368.hex dcs1368] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1369.hex dcs1369]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1370.hex dcs1370] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1371.hex dcs1371] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1372.hex dcs1372] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1373.hex dcs1373] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1374.hex dcs1374] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1375.hex dcs1375] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1376.hex dcs1376] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1377.hex dcs1377] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1378.hex dcs1378] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1379.hex dcs1379]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1380.hex dcs1380] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1381.hex dcs1381] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1382.hex dcs1382] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1383.hex dcs1383] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1384.hex dcs1384] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1385.hex dcs1385] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1386.hex dcs1386] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1387.hex dcs1387] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1388.hex dcs1388] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1389.hex dcs1389]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1390.hex dcs1390] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1391.hex dcs1391] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1392.hex dcs1392] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1393.hex dcs1393] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1394.hex dcs1394] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1395.hex dcs1395] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1396.hex dcs1396] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1397.hex dcs1397] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1398.hex dcs1398] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1399.hex dcs1399] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1400.hex dcs1400] 14e93b9bc362c4867035246fd33cebf10f4b7735 1724 1723 2012-01-30T11:53:42Z Dfe002 7 wikitext text/x-wiki '''30 - 100'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0030.hex dcs0030] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0031.hex dcs0031] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0032.hex dcs0032] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0033.hex dcs0033] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0034.hex dcs0034] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0035.hex dcs0035] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0036.hex dcs0036] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0037.hex dcs0037] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0038.hex dcs0038] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0039.hex dcs0039]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0040.hex dcs0040] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0041.hex dcs0041] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0042.hex dcs0042] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0043.hex dcs0043] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0044.hex dcs0044] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0045.hex dcs0045] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0046.hex dcs0046] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0047.hex dcs0047] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0048.hex dcs0048] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0049.hex dcs0049]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0050.hex dcs0050] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0051.hex dcs0051] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0052.hex dcs0052] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0053.hex dcs0053] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0054.hex dcs0054] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0055.hex dcs0055] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0056.hex dcs0056] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0057.hex dcs0057] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0058.hex dcs0058] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0059.hex dcs0059]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0060.hex dcs0060] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0061.hex dcs0061] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0062.hex dcs0062] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0063.hex dcs0063] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0064.hex dcs0064] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0065.hex dcs0065] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0066.hex dcs0066] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0067.hex dcs0067] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0068.hex dcs0068] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0069.hex dcs0069]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0070.hex dcs0070] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0071.hex dcs0071] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0072.hex dcs0072] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0073.hex dcs0073] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0074.hex dcs0074] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0075.hex dcs0075] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0076.hex dcs0076] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0077.hex dcs0077] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0078.hex dcs0078] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0079.hex dcs0079]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0080.hex dcs0080] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0081.hex dcs0081] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0082.hex dcs0082] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0083.hex dcs0083] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0084.hex dcs0084] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0085.hex dcs0085] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0086.hex dcs0086] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0087.hex dcs0087] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0088.hex dcs0088] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0089.hex dcs0089]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0090.hex dcs0090] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0091.hex dcs0091] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0092.hex dcs0092] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0093.hex dcs0093] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0094.hex dcs0094] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0095.hex dcs0095] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0096.hex dcs0096] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0097.hex dcs0097] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0098.hex dcs0098] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0099.hex dcs0099]<br> '''100 - 199'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0100.hex dcs0100] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0101.hex dcs0101] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0102.hex dcs0102] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0103.hex dcs0103] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0104.hex dcs0104] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0105.hex dcs0105] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0106.hex dcs0106] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0107.hex dcs0107] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0108.hex dcs0108] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0109.hex dcs0109]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0110.hex dcs0110] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0111.hex dcs0111] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0112.hex dcs0112] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0113.hex dcs0113] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0114.hex dcs0114] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0115.hex dcs0115] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0116.hex dcs0116] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0117.hex dcs0117] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0118.hex dcs0118] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0119.hex dcs0119]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0120.hex dcs0120] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0121.hex dcs0121] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0122.hex dcs0122] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0123.hex dcs0123] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0124.hex dcs0124] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0125.hex dcs0125] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0126.hex dcs0126] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0127.hex dcs0127] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0128.hex dcs0128] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0129.hex dcs0129]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0130.hex dcs0130] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0131.hex dcs0131] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0132.hex dcs0132] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0133.hex dcs0133] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0134.hex dcs0134] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0135.hex dcs0135] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0136.hex dcs0136] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0137.hex dcs0137] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0138.hex dcs0138] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0139.hex dcs0139]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0140.hex dcs0140] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0141.hex dcs0141] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0142.hex dcs0142] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0143.hex dcs0143] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0144.hex dcs0144] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0145.hex dcs0145] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0146.hex dcs0146] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0147.hex dcs0147] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0148.hex dcs0148] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0149.hex dcs0149]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0150.hex dcs0150] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0151.hex dcs0151] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0152.hex dcs0152] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0153.hex dcs0153] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0154.hex dcs0154] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0155.hex dcs0155] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0156.hex dcs0156] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0157.hex dcs0157] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0158.hex dcs0158] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0159.hex dcs0159]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0160.hex dcs0160] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0161.hex dcs0161] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0162.hex dcs0162] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0163.hex dcs0163] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0164.hex dcs0164] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0165.hex dcs0165] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0166.hex dcs0166] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0167.hex dcs0167] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0168.hex dcs0168] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0169.hex dcs0169]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0170.hex dcs0170] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0171.hex dcs0171] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0172.hex dcs0172] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0173.hex dcs0173] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0174.hex dcs0174] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0175.hex dcs0175] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0176.hex dcs0176] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0177.hex dcs0177] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0178.hex dcs0178] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0179.hex dcs0179]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0180.hex dcs0180] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0181.hex dcs0181] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0182.hex dcs0182] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0183.hex dcs0183] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0184.hex dcs0184] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0185.hex dcs0185] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0186.hex dcs0186] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0187.hex dcs0187] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0188.hex dcs0188] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0189.hex dcs0189]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0190.hex dcs0190] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0191.hex dcs0191] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0192.hex dcs0192] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0193.hex dcs0193] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0194.hex dcs0194] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0195.hex dcs0195] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0196.hex dcs0196] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0197.hex dcs0197] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0198.hex dcs0198] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0199.hex dcs0199]<br> '''200 - 299'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0200.hex dcs0200] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0201.hex dcs0201] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0202.hex dcs0202] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0203.hex dcs0203] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0204.hex dcs0204] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0205.hex dcs0205] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0206.hex dcs0206] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0207.hex dcs0207] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0208.hex dcs0208] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0209.hex dcs0209]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0210.hex dcs0210] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0211.hex dcs0211] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0212.hex dcs0212] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0213.hex dcs0213] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0214.hex dcs0214] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0215.hex dcs0215] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0216.hex dcs0216] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0217.hex dcs0217] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0218.hex dcs0218] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0219.hex dcs0219]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0220.hex dcs0220] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0221.hex dcs0221] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0222.hex dcs0222] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0223.hex dcs0223] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0224.hex dcs0224] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0225.hex dcs0225] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0226.hex dcs0226] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0227.hex dcs0227] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0228.hex dcs0228] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0229.hex dcs0229]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0230.hex dcs0230] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0231.hex dcs0231] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0232.hex dcs0232] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0233.hex dcs0233] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0234.hex dcs0234] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0235.hex dcs0235] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0236.hex dcs0236] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0237.hex dcs0237] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0238.hex dcs0238] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0239.hex dcs0239]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0240.hex dcs0240] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0241.hex dcs0241] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0242.hex dcs0242] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0243.hex dcs0243] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0244.hex dcs0244] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0245.hex dcs0245] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0246.hex dcs0246] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0247.hex dcs0247] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0248.hex dcs0248] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0249.hex dcs0249]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0250.hex dcs0250] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0251.hex dcs0251] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0252.hex dcs0252] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0253.hex dcs0253] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0254.hex dcs0254] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0255.hex dcs0255] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0256.hex dcs0256] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0257.hex dcs0257] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0258.hex dcs0258] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0259.hex dcs0259]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0260.hex dcs0260] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0261.hex dcs0261] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0262.hex dcs0262] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0263.hex dcs0263] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0264.hex dcs0264] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0265.hex dcs0265] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0266.hex dcs0266] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0267.hex dcs0267] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0268.hex dcs0268] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0269.hex dcs0269]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0270.hex dcs0270] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0271.hex dcs0271] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0272.hex dcs0272] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0273.hex dcs0273] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0274.hex dcs0274] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0275.hex dcs0275] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0276.hex dcs0276] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0277.hex dcs0277] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0278.hex dcs0278] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0279.hex dcs0279]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0280.hex dcs0280] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0281.hex dcs0281] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0282.hex dcs0282] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0283.hex dcs0283] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0284.hex dcs0284] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0285.hex dcs0285] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0286.hex dcs0286] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0287.hex dcs0287] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0288.hex dcs0288] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0289.hex dcs0289]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0290.hex dcs0290] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0291.hex dcs0291] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0292.hex dcs0292] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0293.hex dcs0293] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0294.hex dcs0294] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0295.hex dcs0295] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0296.hex dcs0296] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0297.hex dcs0297] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0298.hex dcs0298] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0299.hex dcs0299]<br> '''300 - 399'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0300.hex dcs0300] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0301.hex dcs0301] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0302.hex dcs0302] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0303.hex dcs0303] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0304.hex dcs0304] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0305.hex dcs0305] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0306.hex dcs0306] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0307.hex dcs0307] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0308.hex dcs0308] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0309.hex dcs0309]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0310.hex dcs0310] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0311.hex dcs0311] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0312.hex dcs0312] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0313.hex dcs0313] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0314.hex dcs0314] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0315.hex dcs0315] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0316.hex dcs0316] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0317.hex dcs0317] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0318.hex dcs0318] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0319.hex dcs0319]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0320.hex dcs0320] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0321.hex dcs0321] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0322.hex dcs0322] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0323.hex dcs0323] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0324.hex dcs0324] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0325.hex dcs0325] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0326.hex dcs0326] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0327.hex dcs0327] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0328.hex dcs0328] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0329.hex dcs0329]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0330.hex dcs0330] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0331.hex dcs0331] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0332.hex dcs0332] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0333.hex dcs0333] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0334.hex dcs0334] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0335.hex dcs0335] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0336.hex dcs0336] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0337.hex dcs0337] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0338.hex dcs0338] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0339.hex dcs0339]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0340.hex dcs0340] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0341.hex dcs0341] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0342.hex dcs0342] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0343.hex dcs0343] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0344.hex dcs0344] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0345.hex dcs0345] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0346.hex dcs0346] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0347.hex dcs0347] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0348.hex dcs0348] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0349.hex dcs0349]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0350.hex dcs0350] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0351.hex dcs0351] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0352.hex dcs0352] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0353.hex dcs0353] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0354.hex dcs0354] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0355.hex dcs0355] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0356.hex dcs0356] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0357.hex dcs0357] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0358.hex dcs0358] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0359.hex dcs0359]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0360.hex dcs0360] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0361.hex dcs0361] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0362.hex dcs0362] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0363.hex dcs0363] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0364.hex dcs0364] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0365.hex dcs0365] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0366.hex dcs0366] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0367.hex dcs0367] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0368.hex dcs0368] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0369.hex dcs0369]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0370.hex dcs0370] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0371.hex dcs0371] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0372.hex dcs0372] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0373.hex dcs0373] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0374.hex dcs0374] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0375.hex dcs0375] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0376.hex dcs0376] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0377.hex dcs0377] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0378.hex dcs0378] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0379.hex dcs0379]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0380.hex dcs0380] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0381.hex dcs0381] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0382.hex dcs0382] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0383.hex dcs0383] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0384.hex dcs0384] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0385.hex dcs0385] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0386.hex dcs0386] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0387.hex dcs0387] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0388.hex dcs0388] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0389.hex dcs0389]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0390.hex dcs0390] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0391.hex dcs0391] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0392.hex dcs0392] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0393.hex dcs0393] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0394.hex dcs0394] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0395.hex dcs0395] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0396.hex dcs0396] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0397.hex dcs0397] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0398.hex dcs0398] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0399.hex dcs0399]<br> '''400 - 499'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0400.hex dcs0400] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0401.hex dcs0401] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0402.hex dcs0402] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0403.hex dcs0403] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0404.hex dcs0404] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0405.hex dcs0405] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0406.hex dcs0406] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0407.hex dcs0407] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0408.hex dcs0408] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0409.hex dcs0409]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0410.hex dcs0410] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0411.hex dcs0411] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0412.hex dcs0412] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0413.hex dcs0413] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0414.hex dcs0414] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0415.hex dcs0415] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0416.hex dcs0416] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0417.hex dcs0417] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0418.hex dcs0418] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0419.hex dcs0419]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0420.hex dcs0420] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0421.hex dcs0421] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0422.hex dcs0422] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0423.hex dcs0423] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0424.hex dcs0424] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0425.hex dcs0425] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0426.hex dcs0426] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0427.hex dcs0427] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0428.hex dcs0428] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0429.hex dcs0429]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0430.hex dcs0430] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0431.hex dcs0431] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0432.hex dcs0432] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0433.hex dcs0433] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0434.hex dcs0434] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0435.hex dcs0435] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0436.hex dcs0436] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0437.hex dcs0437] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0438.hex dcs0438] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0439.hex dcs0439]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0440.hex dcs0440] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0441.hex dcs0441] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0442.hex dcs0442] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0443.hex dcs0443] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0444.hex dcs0444] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0445.hex dcs0445] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0446.hex dcs0446] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0447.hex dcs0447] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0448.hex dcs0448] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0449.hex dcs0449]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0450.hex dcs0450] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0451.hex dcs0451] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0452.hex dcs0452] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0453.hex dcs0453] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0454.hex dcs0454] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0455.hex dcs0455] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0456.hex dcs0456] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0457.hex dcs0457] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0458.hex dcs0458] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0459.hex dcs0459]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0460.hex dcs0460] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0461.hex dcs0461] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0462.hex dcs0462] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0463.hex dcs0463] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0464.hex dcs0464] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0465.hex dcs0465] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0466.hex dcs0466] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0467.hex dcs0467] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0468.hex dcs0468] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0469.hex dcs0469]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0470.hex dcs0470] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0471.hex dcs0471] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0472.hex dcs0472] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0473.hex dcs0473] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0474.hex dcs0474] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0475.hex dcs0475] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0476.hex dcs0476] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0477.hex dcs0477] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0478.hex dcs0478] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0479.hex dcs0479]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0480.hex dcs0480] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0481.hex dcs0481] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0482.hex dcs0482] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0483.hex dcs0483] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0484.hex dcs0484] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0485.hex dcs0485] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0486.hex dcs0486] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0487.hex dcs0487] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0488.hex dcs0488] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0489.hex dcs0489]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0490.hex dcs0490] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0491.hex dcs0491] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0492.hex dcs0492] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0493.hex dcs0493] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0494.hex dcs0494] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0495.hex dcs0495] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0496.hex dcs0496] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0497.hex dcs0497] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0498.hex dcs0498] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0499.hex dcs0499]<br> '''500 - 599'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0500.hex dcs0500] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0501.hex dcs0501] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0502.hex dcs0502] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0503.hex dcs0503] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0504.hex dcs0504] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0505.hex dcs0505] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0506.hex dcs0506] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0507.hex dcs0507] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0508.hex dcs0508] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0509.hex dcs0509]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0510.hex dcs0510] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0511.hex dcs0511] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0512.hex dcs0512] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0513.hex dcs0513] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0514.hex dcs0514] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0515.hex dcs0515] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0516.hex dcs0516] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0517.hex dcs0517] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0518.hex dcs0518] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0519.hex dcs0519]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0520.hex dcs0520] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0521.hex dcs0521] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0522.hex dcs0522] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0523.hex dcs0523] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0524.hex dcs0524] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0525.hex dcs0525] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0526.hex dcs0526] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0527.hex dcs0527] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0528.hex dcs0528] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0529.hex dcs0529]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0530.hex dcs0530] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0531.hex dcs0531] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0532.hex dcs0532] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0533.hex dcs0533] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0534.hex dcs0534] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0535.hex dcs0535] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0536.hex dcs0536] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0537.hex dcs0537] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0538.hex dcs0538] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0539.hex dcs0539]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0540.hex dcs0540] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0541.hex dcs0541] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0542.hex dcs0542] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0543.hex dcs0543] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0544.hex dcs0544] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0545.hex dcs0545] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0546.hex dcs0546] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0547.hex dcs0547] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0548.hex dcs0548] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0549.hex dcs0549]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0550.hex dcs0550] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0551.hex dcs0551] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0552.hex dcs0552] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0553.hex dcs0553] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0554.hex dcs0554] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0555.hex dcs0555] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0556.hex dcs0556] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0557.hex dcs0557] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0558.hex dcs0558] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0559.hex dcs0559]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0560.hex dcs0560] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0561.hex dcs0561] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0562.hex dcs0562] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0563.hex dcs0563] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0564.hex dcs0564] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0565.hex dcs0565] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0566.hex dcs0566] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0567.hex dcs0567] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0568.hex dcs0568] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0569.hex dcs0569]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0570.hex dcs0570] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0571.hex dcs0571] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0572.hex dcs0572] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0573.hex dcs0573] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0574.hex dcs0574] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0575.hex dcs0575] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0576.hex dcs0576] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0577.hex dcs0577] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0578.hex dcs0578] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0579.hex dcs0579]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0580.hex dcs0580] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0581.hex dcs0581] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0582.hex dcs0582] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0583.hex dcs0583] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0584.hex dcs0584] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0585.hex dcs0585] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0586.hex dcs0586] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0587.hex dcs0587] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0588.hex dcs0588] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0589.hex dcs0589]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0590.hex dcs0590] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0591.hex dcs0591] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0592.hex dcs0592] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0593.hex dcs0593] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0594.hex dcs0594] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0595.hex dcs0595] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0596.hex dcs0596] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0597.hex dcs0597] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0598.hex dcs0598] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0599.hex dcs0599]<br> '''600 - 699'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0600.hex dcs0600] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0601.hex dcs0601] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0602.hex dcs0602] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0603.hex dcs0603] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0604.hex dcs0604] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0605.hex dcs0605] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0606.hex dcs0606] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0607.hex dcs0607] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0608.hex dcs0608] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0609.hex dcs0609]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0610.hex dcs0610] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0611.hex dcs0611] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0612.hex dcs0612] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0613.hex dcs0613] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0614.hex dcs0614] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0615.hex dcs0615] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0616.hex dcs0616] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0617.hex dcs0617] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0618.hex dcs0618] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0619.hex dcs0619]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0620.hex dcs0620] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0621.hex dcs0621] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0622.hex dcs0622] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0623.hex dcs0623] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0624.hex dcs0624] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0625.hex dcs0625] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0626.hex dcs0626] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0627.hex dcs0627] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0628.hex dcs0628] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0629.hex dcs0629]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0630.hex dcs0630] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0631.hex dcs0631] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0632.hex dcs0632] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0633.hex dcs0633] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0634.hex dcs0634] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0635.hex dcs0635] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0636.hex dcs0636] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0637.hex dcs0637] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0638.hex dcs0638] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0639.hex dcs0639]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0640.hex dcs0640] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0641.hex dcs0641] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0642.hex dcs0642] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0643.hex dcs0643] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0644.hex dcs0644] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0645.hex dcs0645] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0646.hex dcs0646] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0647.hex dcs0647] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0648.hex dcs0648] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0649.hex dcs0649]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0650.hex dcs0650] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0651.hex dcs0651] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0652.hex dcs0652] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0653.hex dcs0653] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0654.hex dcs0654] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0655.hex dcs0655] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0656.hex dcs0656] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0657.hex dcs0657] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0658.hex dcs0658] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0659.hex dcs0659]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0660.hex dcs0660] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0661.hex dcs0661] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0662.hex dcs0662] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0663.hex dcs0663] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0664.hex dcs0664] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0665.hex dcs0665] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0666.hex dcs0666] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0667.hex dcs0667] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0668.hex dcs0668] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0669.hex dcs0669]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0670.hex dcs0670] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0671.hex dcs0671] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0672.hex dcs0672] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0673.hex dcs0673] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0674.hex dcs0674] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0675.hex dcs0675] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0676.hex dcs0676] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0677.hex dcs0677] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0678.hex dcs0678] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0679.hex dcs0679]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0680.hex dcs0680] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0681.hex dcs0681] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0682.hex dcs0682] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0683.hex dcs0683] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0684.hex dcs0684] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0685.hex dcs0685] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0686.hex dcs0686] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0687.hex dcs0687] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0688.hex dcs0688] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0689.hex dcs0689]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0690.hex dcs0690] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0691.hex dcs0691] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0692.hex dcs0692] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0693.hex dcs0693] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0694.hex dcs0694] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0695.hex dcs0695] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0696.hex dcs0696] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0697.hex dcs0697] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0698.hex dcs0698] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0699.hex dcs0699]<br> '''700 - 799'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0700.hex dcs0700] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0701.hex dcs0701] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0702.hex dcs0702] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0703.hex dcs0703] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0704.hex dcs0704] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0705.hex dcs0705] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0706.hex dcs0706] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0707.hex dcs0707] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0708.hex dcs0708] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0709.hex dcs0709]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0710.hex dcs0710] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0711.hex dcs0711] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0712.hex dcs0712] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0713.hex dcs0713] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0714.hex dcs0714] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0715.hex dcs0715] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0716.hex dcs0716] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0717.hex dcs0717] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0718.hex dcs0718] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0719.hex dcs0719]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0720.hex dcs0720] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0721.hex dcs0721] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0722.hex dcs0722] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0723.hex dcs0723] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0724.hex dcs0724] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0725.hex dcs0725] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0726.hex dcs0726] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0727.hex dcs0727] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0728.hex dcs0728] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0729.hex dcs0729]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0730.hex dcs0730] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0731.hex dcs0731] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0732.hex dcs0732] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0733.hex dcs0733] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0734.hex dcs0734] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0735.hex dcs0735] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0736.hex dcs0736] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0737.hex dcs0737] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0738.hex dcs0738] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0739.hex dcs0739]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0740.hex dcs0740] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0741.hex dcs0741] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0742.hex dcs0742] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0743.hex dcs0743] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0744.hex dcs0744] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0745.hex dcs0745] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0746.hex dcs0746] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0747.hex dcs0747] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0748.hex dcs0748] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0749.hex dcs0749]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0750.hex dcs0750] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0751.hex dcs0751] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0752.hex dcs0752] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0753.hex dcs0753] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0754.hex dcs0754] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0755.hex dcs0755] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0756.hex dcs0756] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0757.hex dcs0757] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0758.hex dcs0758] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0759.hex dcs0759]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0760.hex dcs0760] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0761.hex dcs0761] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0762.hex dcs0762] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0763.hex dcs0763] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0764.hex dcs0764] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0765.hex dcs0765] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0766.hex dcs0766] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0767.hex dcs0767] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0768.hex dcs0768] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0769.hex dcs0769]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0770.hex dcs0770] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0771.hex dcs0771] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0772.hex dcs0772] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0773.hex dcs0773] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0774.hex dcs0774] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0775.hex dcs0775] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0776.hex dcs0776] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0777.hex dcs0777] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0778.hex dcs0778] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0779.hex dcs0779]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0780.hex dcs0780] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0781.hex dcs0781] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0782.hex dcs0782] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0783.hex dcs0783] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0784.hex dcs0784] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0785.hex dcs0785] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0786.hex dcs0786] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0787.hex dcs0787] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0788.hex dcs0788] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0789.hex dcs0789]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0790.hex dcs0790] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0791.hex dcs0791] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0792.hex dcs0792] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0793.hex dcs0793] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0794.hex dcs0794] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0795.hex dcs0795] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0796.hex dcs0796] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0797.hex dcs0797] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0798.hex dcs0798] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0799.hex dcs0799]<br> '''800 - 899'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0800.hex dcs0800] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0801.hex dcs0801] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0802.hex dcs0802] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0803.hex dcs0803] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0804.hex dcs0804] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0805.hex dcs0805] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0806.hex dcs0806] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0807.hex dcs0807] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0808.hex dcs0808] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0809.hex dcs0809]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0810.hex dcs0810] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0811.hex dcs0811] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0812.hex dcs0812] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0813.hex dcs0813] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0814.hex dcs0814] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0815.hex dcs0815] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0816.hex dcs0816] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0817.hex dcs0817] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0818.hex dcs0818] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0819.hex dcs0819]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0820.hex dcs0820] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0821.hex dcs0821] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0822.hex dcs0822] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0823.hex dcs0823] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0824.hex dcs0824] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0825.hex dcs0825] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0826.hex dcs0826] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0827.hex dcs0827] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0828.hex dcs0828] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0829.hex dcs0829]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0830.hex dcs0830] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0831.hex dcs0831] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0832.hex dcs0832] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0833.hex dcs0833] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0834.hex dcs0834] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0835.hex dcs0835] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0836.hex dcs0836] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0837.hex dcs0837] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0838.hex dcs0838] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0839.hex dcs0839]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0840.hex dcs0840] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0841.hex dcs0841] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0842.hex dcs0842] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0843.hex dcs0843] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0844.hex dcs0844] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0845.hex dcs0845] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0846.hex dcs0846] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0847.hex dcs0847] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0848.hex dcs0848] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0849.hex dcs0849]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0850.hex dcs0850] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0851.hex dcs0851] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0852.hex dcs0852] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0853.hex dcs0853] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0854.hex dcs0854] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0855.hex dcs0855] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0856.hex dcs0856] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0857.hex dcs0857] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0858.hex dcs0858] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0859.hex dcs0859]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0860.hex dcs0860] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0861.hex dcs0861] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0862.hex dcs0862] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0863.hex dcs0863] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0864.hex dcs0864] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0865.hex dcs0865] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0866.hex dcs0866] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0867.hex dcs0867] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0868.hex dcs0868] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0869.hex dcs0869]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0870.hex dcs0870] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0871.hex dcs0871] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0872.hex dcs0872] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0873.hex dcs0873] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0874.hex dcs0874] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0875.hex dcs0875] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0876.hex dcs0876] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0877.hex dcs0877] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0878.hex dcs0878] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0879.hex dcs0879]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0880.hex dcs0880] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0881.hex dcs0881] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0882.hex dcs0882] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0883.hex dcs0883] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0884.hex dcs0884] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0885.hex dcs0885] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0886.hex dcs0886] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0887.hex dcs0887] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0888.hex dcs0888] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0889.hex dcs0889]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0890.hex dcs0890] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0891.hex dcs0891] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0892.hex dcs0892] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0893.hex dcs0893] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0894.hex dcs0894] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0895.hex dcs0895] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0896.hex dcs0896] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0897.hex dcs0897] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0898.hex dcs0898] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0899.hex dcs0899]<br> '''900 - 999'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0900.hex dcs0900] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0901.hex dcs0901] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0902.hex dcs0902] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0903.hex dcs0903] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0904.hex dcs0904] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0905.hex dcs0905] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0906.hex dcs0906] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0907.hex dcs0907] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0908.hex dcs0908] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0909.hex dcs0909]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0910.hex dcs0910] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0911.hex dcs0911] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0912.hex dcs0912] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0913.hex dcs0913] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0914.hex dcs0914] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0915.hex dcs0915] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0916.hex dcs0916] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0917.hex dcs0917] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0918.hex dcs0918] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0919.hex dcs0919]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0920.hex dcs0920] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0921.hex dcs0921] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0922.hex dcs0922] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0923.hex dcs0923] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0924.hex dcs0924] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0925.hex dcs0925] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0926.hex dcs0926] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0927.hex dcs0927] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0928.hex dcs0928] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0929.hex dcs0929]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0930.hex dcs0930] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0931.hex dcs0931] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0932.hex dcs0932] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0933.hex dcs0933] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0934.hex dcs0934] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0935.hex dcs0935] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0936.hex dcs0936] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0937.hex dcs0937] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0938.hex dcs0938] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0939.hex dcs0939]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0940.hex dcs0940] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0941.hex dcs0941] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0942.hex dcs0942] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0943.hex dcs0943] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0944.hex dcs0944] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0945.hex dcs0945] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0946.hex dcs0946] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0947.hex dcs0947] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0948.hex dcs0948] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0949.hex dcs0949]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0950.hex dcs0950] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0951.hex dcs0951] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0952.hex dcs0952] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0953.hex dcs0953] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0954.hex dcs0954] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0955.hex dcs0955] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0956.hex dcs0956] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0957.hex dcs0957] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0958.hex dcs0958] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0959.hex dcs0959]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0960.hex dcs0960] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0961.hex dcs0961] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0962.hex dcs0962] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0963.hex dcs0963] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0964.hex dcs0964] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0965.hex dcs0965] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0966.hex dcs0966] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0967.hex dcs0967] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0968.hex dcs0968] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0969.hex dcs0969]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0970.hex dcs0970] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0971.hex dcs0971] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0972.hex dcs0972] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0973.hex dcs0973] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0974.hex dcs0974] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0975.hex dcs0975] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0976.hex dcs0976] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0977.hex dcs0977] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0978.hex dcs0978] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0979.hex dcs0979]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0980.hex dcs0980] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0981.hex dcs0981] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0982.hex dcs0982] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0983.hex dcs0983] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0984.hex dcs0984] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0985.hex dcs0985] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0986.hex dcs0986] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0987.hex dcs0987] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0988.hex dcs0988] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0989.hex dcs0989]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0990.hex dcs0990] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0991.hex dcs0991] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0992.hex dcs0992] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0993.hex dcs0993] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0994.hex dcs0994] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0995.hex dcs0995] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0996.hex dcs0996] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0997.hex dcs0997] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0998.hex dcs0998] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0999.hex dcs0999]<br> '''1000 - 1099'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1000.hex dcs1000] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1001.hex dcs1001] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1002.hex dcs1002] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1003.hex dcs1003] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1004.hex dcs1004] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1005.hex dcs1005] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1006.hex dcs1006] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1007.hex dcs1007] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1008.hex dcs1008] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1009.hex dcs1009]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1010.hex dcs1010] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1011.hex dcs1011] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1012.hex dcs1012] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1013.hex dcs1013] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1014.hex dcs1014] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1015.hex dcs1015] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1016.hex dcs1016] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1017.hex dcs1017] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1018.hex dcs1018] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1019.hex dcs1019]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1020.hex dcs1020] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1021.hex dcs1021] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1022.hex dcs1022] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1023.hex dcs1023] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1024.hex dcs1024] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1025.hex dcs1025] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1026.hex dcs1026] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1027.hex dcs1027] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1028.hex dcs1028] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1029.hex dcs1029]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1030.hex dcs1030] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1031.hex dcs1031] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1032.hex dcs1032] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1033.hex dcs1033] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1034.hex dcs1034] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1035.hex dcs1035] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1036.hex dcs1036] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1037.hex dcs1037] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1038.hex dcs1038] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1039.hex dcs1039]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1040.hex dcs1040] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1041.hex dcs1041] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1042.hex dcs1042] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1043.hex dcs1043] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1044.hex dcs1044] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1045.hex dcs1045] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1046.hex dcs1046] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1047.hex dcs1047] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1048.hex dcs1048] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1049.hex dcs1049]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1050.hex dcs1050] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1051.hex dcs1051] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1052.hex dcs1052] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1053.hex dcs1053] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1054.hex dcs1054] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1055.hex dcs1055] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1056.hex dcs1056] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1057.hex dcs1057] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1058.hex dcs1058] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1059.hex dcs1059]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1060.hex dcs1060] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1061.hex dcs1061] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1062.hex dcs1062] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1063.hex dcs1063] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1064.hex dcs1064] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1065.hex dcs1065] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1066.hex dcs1066] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1067.hex dcs1067] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1068.hex dcs1068] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1069.hex dcs1069]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1070.hex dcs1070] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1071.hex dcs1071] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1072.hex dcs1072] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1073.hex dcs1073] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1074.hex dcs1074] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1075.hex dcs1075] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1076.hex dcs1076] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1077.hex dcs1077] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1078.hex dcs1078] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1079.hex dcs1079]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1080.hex dcs1080] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1081.hex dcs1081] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1082.hex dcs1082] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1083.hex dcs1083] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1084.hex dcs1084] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1085.hex dcs1085] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1086.hex dcs1086] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1087.hex dcs1087] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1088.hex dcs1088] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1089.hex dcs1089]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1090.hex dcs1090] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1091.hex dcs1091] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1092.hex dcs1092] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1093.hex dcs1093] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1094.hex dcs1094] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1095.hex dcs1095] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1096.hex dcs1096] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1097.hex dcs1097] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1098.hex dcs1098] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1099.hex dcs1099]<br> '''1100 - 1199'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1100.hex dcs1100] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1101.hex dcs1101] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1102.hex dcs1102] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1103.hex dcs1103] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1104.hex dcs1104] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1105.hex dcs1105] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1106.hex dcs1106] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1107.hex dcs1107] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1108.hex dcs1108] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1109.hex dcs1109]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1110.hex dcs1110] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1111.hex dcs1111] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1112.hex dcs1112] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1113.hex dcs1113] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1114.hex dcs1114] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1115.hex dcs1115] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1116.hex dcs1116] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1117.hex dcs1117] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1118.hex dcs1118] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1119.hex dcs1119]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1120.hex dcs1120] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1121.hex dcs1121] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1122.hex dcs1122] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1123.hex dcs1123] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1124.hex dcs1124] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1125.hex dcs1125] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1126.hex dcs1126] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1127.hex dcs1127] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1128.hex dcs1128] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1129.hex dcs1129]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1130.hex dcs1130] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1131.hex dcs1131] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1132.hex dcs1132] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1133.hex dcs1133] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1134.hex dcs1134] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1135.hex dcs1135] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1136.hex dcs1136] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1137.hex dcs1137] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1138.hex dcs1138] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1139.hex dcs1139]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1140.hex dcs1140] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1141.hex dcs1141] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1142.hex dcs1142] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1143.hex dcs1143] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1144.hex dcs1144] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1145.hex dcs1145] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1146.hex dcs1146] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1147.hex dcs1147] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1148.hex dcs1148] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1149.hex dcs1149]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1150.hex dcs1150] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1151.hex dcs1151] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1152.hex dcs1152] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1153.hex dcs1153] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1154.hex dcs1154] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1155.hex dcs1155] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1156.hex dcs1156] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1157.hex dcs1157] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1158.hex dcs1158] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1159.hex dcs1159]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1160.hex dcs1160] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1161.hex dcs1161] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1162.hex dcs1162] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1163.hex dcs1163] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1164.hex dcs1164] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1165.hex dcs1165] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1166.hex dcs1166] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1167.hex dcs1167] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1168.hex dcs1168] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1169.hex dcs1169]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1170.hex dcs1170] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1171.hex dcs1171] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1172.hex dcs1172] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1173.hex dcs1173] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1174.hex dcs1174] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1175.hex dcs1175] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1176.hex dcs1176] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1177.hex dcs1177] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1178.hex dcs1178] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1179.hex dcs1179]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1180.hex dcs1180] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1181.hex dcs1181] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1182.hex dcs1182] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1183.hex dcs1183] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1184.hex dcs1184] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1185.hex dcs1185] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1186.hex dcs1186] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1187.hex dcs1187] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1188.hex dcs1188] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1189.hex dcs1189]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1190.hex dcs1190] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1191.hex dcs1191] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1192.hex dcs1192] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1193.hex dcs1193] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1194.hex dcs1194] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1195.hex dcs1195] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1196.hex dcs1196] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1197.hex dcs1197] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1198.hex dcs1198] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1199.hex dcs1199]<br> '''1200 - 1299'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1200.hex dcs1200] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1201.hex dcs1201] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1202.hex dcs1202] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1203.hex dcs1203] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1204.hex dcs1204] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1205.hex dcs1205] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1206.hex dcs1206] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1207.hex dcs1207] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1208.hex dcs1208] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1209.hex dcs1209]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1210.hex dcs1210] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1211.hex dcs1211] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1212.hex dcs1212] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1213.hex dcs1213] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1214.hex dcs1214] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1215.hex dcs1215] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1216.hex dcs1216] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1217.hex dcs1217] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1218.hex dcs1218] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1219.hex dcs1219]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1220.hex dcs1220] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1221.hex dcs1221] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1222.hex dcs1222] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1223.hex dcs1223] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1224.hex dcs1224] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1225.hex dcs1225] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1226.hex dcs1226] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1227.hex dcs1227] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1228.hex dcs1228] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1229.hex dcs1229]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1230.hex dcs1230] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1231.hex dcs1231] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1232.hex dcs1232] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1233.hex dcs1233] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1234.hex dcs1234] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1235.hex dcs1235] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1236.hex dcs1236] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1237.hex dcs1237] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1238.hex dcs1238] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1239.hex dcs1239]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1240.hex dcs1240] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1241.hex dcs1241] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1242.hex dcs1242] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1243.hex dcs1243] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1244.hex dcs1244] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1245.hex dcs1245] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1246.hex dcs1246] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1247.hex dcs1247] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1248.hex dcs1248] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1249.hex dcs1249]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1250.hex dcs1250] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1251.hex dcs1251] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1252.hex dcs1252] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1253.hex dcs1253] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1254.hex dcs1254] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1255.hex dcs1255] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1256.hex dcs1256] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1257.hex dcs1257] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1258.hex dcs1258] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1259.hex dcs1259]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1260.hex dcs1260] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1261.hex dcs1261] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1262.hex dcs1262] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1263.hex dcs1263] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1264.hex dcs1264] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1265.hex dcs1265] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1266.hex dcs1266] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1267.hex dcs1267] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1268.hex dcs1268] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1269.hex dcs1269]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1270.hex dcs1270] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1271.hex dcs1271] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1272.hex dcs1272] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1273.hex dcs1273] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1274.hex dcs1274] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1275.hex dcs1275] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1276.hex dcs1276] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1277.hex dcs1277] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1278.hex dcs1278] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1279.hex dcs1279]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1280.hex dcs1280] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1281.hex dcs1281] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1282.hex dcs1282] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1283.hex dcs1283] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1284.hex dcs1284] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1285.hex dcs1285] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1286.hex dcs1286] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1287.hex dcs1287] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1288.hex dcs1288] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1289.hex dcs1289]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1290.hex dcs1290] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1291.hex dcs1291] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1292.hex dcs1292] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1293.hex dcs1293] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1294.hex dcs1294] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1295.hex dcs1295] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1296.hex dcs1296] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1297.hex dcs1297] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1298.hex dcs1298] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1299.hex dcs1299]<br> '''1300 - 1400'''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1300.hex dcs1300] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1301.hex dcs1301] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1302.hex dcs1302] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1303.hex dcs1303] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1304.hex dcs1304] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1305.hex dcs1305] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1306.hex dcs1306] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1307.hex dcs1307] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1308.hex dcs1308] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1309.hex dcs1309]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1310.hex dcs1310] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1311.hex dcs1311] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1312.hex dcs1312] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1313.hex dcs1313] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1314.hex dcs1314] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1315.hex dcs1315] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1316.hex dcs1316] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1317.hex dcs1317] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1318.hex dcs1318] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1319.hex dcs1319]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1320.hex dcs1320] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1321.hex dcs1321] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1322.hex dcs1322] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1323.hex dcs1323] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1324.hex dcs1324] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1325.hex dcs1325] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1326.hex dcs1326] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1327.hex dcs1327] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1328.hex dcs1328] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1329.hex dcs1329]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1330.hex dcs1330] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1331.hex dcs1331] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1332.hex dcs1332] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1333.hex dcs1333] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1334.hex dcs1334] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1335.hex dcs1335] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1336.hex dcs1336] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1337.hex dcs1337] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1338.hex dcs1338] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1339.hex dcs1339]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1340.hex dcs1340] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1341.hex dcs1341] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1342.hex dcs1342] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1343.hex dcs1343] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1344.hex dcs1344] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1345.hex dcs1345] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1346.hex dcs1346] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1347.hex dcs1347] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1348.hex dcs1348] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1349.hex dcs1349]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1350.hex dcs1350] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1351.hex dcs1351] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1352.hex dcs1352] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1353.hex dcs1353] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1354.hex dcs1354] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1355.hex dcs1355] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1356.hex dcs1356] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1357.hex dcs1357] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1358.hex dcs1358] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1359.hex dcs1359]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1360.hex dcs1360] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1361.hex dcs1361] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1362.hex dcs1362] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1363.hex dcs1363] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1364.hex dcs1364] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1365.hex dcs1365] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1366.hex dcs1366] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1367.hex dcs1367] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1368.hex dcs1368] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1369.hex dcs1369]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1370.hex dcs1370] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1371.hex dcs1371] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1372.hex dcs1372] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1373.hex dcs1373] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1374.hex dcs1374] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1375.hex dcs1375] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1376.hex dcs1376] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1377.hex dcs1377] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1378.hex dcs1378] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1379.hex dcs1379]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1380.hex dcs1380] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1381.hex dcs1381] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1382.hex dcs1382] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1383.hex dcs1383] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1384.hex dcs1384] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1385.hex dcs1385] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1386.hex dcs1386] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1387.hex dcs1387] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1388.hex dcs1388] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1389.hex dcs1389]<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1390.hex dcs1390] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1391.hex dcs1391] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1392.hex dcs1392] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1393.hex dcs1393] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1394.hex dcs1394] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1395.hex dcs1395] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1396.hex dcs1396] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1397.hex dcs1397] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1398.hex dcs1398] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1399.hex dcs1399] [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs1400.hex dcs1400] a7ac8e268889ee7da1608b4e4c8d5cf2597b770f Electronics for the Time Projection Chamber (TPC) 0 4 1725 1721 2012-01-31T12:21:26Z Dfe002 7 /* Download Section */ added link to rcS file wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> '''2.9 (30.1.2012)'''<br> <ul> <li> Updated udhcpc <li> Updated rcS (udhcpc parameters, ntp timeserver, bootscript execution order) <li> modified nfsmount_all to only mount dcbrw and dcbro <li> added _S05restartreadback.sh, S27enable_ttcrx.sh, S31unsetOldMode.sh, S52startntp.sh to /etc/boot <li> removed S30rcu-conf.sh, S31setoldmode from /etc/boot <li> disabled CONFIG_DEBUG_SLAB in kernel </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <li>'''Version 2.9: '''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0031.hex hex file for dcs0031] | [[Firmware files for boards 30 - 1400]] | [http://web.ift.uib.no/~dominik/files/dcs_fw/rcS rcS file for new udhcpc, boot script order] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br> '''v 1.5 (17.08.2010)'''<br> <ul> <li>Fix done by Attiq Ur Rehman:<br> There is minor change in the "fifo wrapper":<br> Line #73 new signal cnt_dn<br> Line #91 comparison with "read_counter"<br> Line #170,172,174 check of possible logical conditions<br> This file was used for the RCU firmware (from 10th July and on wards) to fix the Erroneous behavior causing busy condition. </li> </ul> <br> '''v 1.6 (20.01.2012)'''<br> <ul> <li>Single l2 messages does not generate CDH</li> <li>Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register.</li> <li>Cleaned up code and removed commented lines (RoI is now gone)</li> <li>Minor changes to DAQ header error word</li> <li>New output: sync - software trigger decoded from RoC = 0xD</li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.5_source_files.rar Firmware v 1.5 - VHDL files, including testbench]<br> <br> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.6.pdf Specification/design document for Firmware version 1.6] (Updated 20.01.12) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.6_source_files.zip Firmware v 1.6 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool]. Note that version 9.0 gives errors when trying to program the FPGA. [ftp://ftp.actel.com/downloads/flashpro/FlashPro86.zip Version 8.6] is the last version that works for the Actel on the RCU.<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 407a3dd7876fef5eb0ca255d7f07a738014962e4 Modelsim/Questa 0 33 1726 1713 2012-02-01T12:13:38Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[http://www.edn.com/contents/images/46098.pdf 10 tips for generating reusable VHDL]] [[http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide]] [[http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer]] [[Category:Mikroelektronikk]] 263addc50e6ce36aa6805f668cee48b348967ca1 ATLASThesesNotes 0 234 1727 1714 2012-02-01T12:15:01Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] a48a6fe92a1c1684afe73f4de0e9aef4d0257192 File:Thesis orjan dale.pdf 6 401 1728 2012-02-01T13:27:26Z Nfyal 26 All you need to know about susy with taus in ATLAS and mysteries hidden in 2010 ATLAS collision data wikitext text/x-wiki All you need to know about susy with taus in ATLAS and mysteries hidden in 2010 ATLAS collision data d94067337cf8f1ce5f99b412aa70492f4c5dd697 Installing DarkSusy 0 398 1729 1718 2012-02-02T13:45:50Z Kmo078 65 wikitext text/x-wiki ==Installing== To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' *If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' *If you run mac (tested on mac osx 10.6), the c++ and fortran compilers will not compile for the same architecture unless you preface configure command with ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. ==Compiling programs== To compile your own Fortran program written with DarkSusy, the call should be similar to (if you've configured with gfortran): ''gfortran -I$PWD/../include -L$PWD/../lib -o ProgramName ProgramName.f -ldarksusy -lFH -lHB'' For examples, one can look in the makefile in ''test''. [[Category:Installing]] 38002e420d58290a45278ce23e02138bfb083a4d Get readout box up and running 0 399 1730 1716 2012-02-02T14:59:03Z Sya081 50 wikitext text/x-wiki *Hardware requirements* * Focal read-out box * Computer with Gb network capability * One or more patch panels PCBs * One or more flex PCBs with mounted MIMOS ASICs *Software requirements and drivers* - Use Impact to configure FPGA(s) - start TFTP server - Use XMD: <pre> $ connect mb mdm -debugdevice devicenr 4 $ dow u-boot.elf </pre> Open serial console <pre> $ tftp </pre> Boot Linux kernel: <pre> $ bootm </pre> Adjust MAC address and load startup script: <pre> $ ifconfig eth0 hw ether 00:0a:35:02:4b:a8 $ udhcpc $ /home/test/load.sh </pre> 50f1dd49c295e91eae5062fbda316da2707a3dc5 1731 1730 2012-02-02T15:05:22Z Sya081 50 wikitext text/x-wiki ===Overview=== ==Hardware requirements== *Focal read-out box *Computer with Gb network capability *One or more patch panels PCBs *One or more flex PCBs with mounted MIMOS ASICs ==Software requirements and drivers== ==Using Xilinx Impact to configure FPGA(s)== How-TO ==Configure TFTP server== How-To - Use XMD: $ connect mb mdm -debugdevice devicenr 4 $ dow u-boot.elf Open serial console <pre> $ tftp </pre> Boot Linux kernel: <pre> $ bootm </pre> Adjust MAC address and load startup script: <pre> $ ifconfig eth0 hw ether 00:0a:35:02:4b:a8 $ udhcpc $ /home/test/load.sh </pre> c592ffd9ce6484a6ece496fb83256ba17ff3b911 1732 1731 2012-02-02T15:11:25Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Computer with Gb network capability *One or more patch panels PCBs *One or more flex PCBs with mounted MIMOS ASICs ==Software requirements and drivers== ==Configure the FPGA(s)== ===Using XMD=== How-to ===Using Impact=== How-TO ==Configure TFTP server== How-To ==Connect to debug module on Processor Bus== - Use XMD: $ connect mb mdm -debugdevice devicenr 4 $ dow u-boot.elf Open serial console $ tftp Boot Linux kernel: <pre> $ bootm </pre> Adjust MAC address and load startup script: <pre> $ ifconfig eth0 hw ether 00:0a:35:02:4b:a8 $ udhcpc $ /home/test/load.sh </pre> - Use XMD: $ connect mb mdm -debugdevice devicenr 4 $ dow u-boot.elf 5005c7cf0ff391f32d0e3485685fe79a34231634 1733 1732 2012-02-03T09:53:48Z Sya081 50 Newly added. wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Computer with Gb network capability *One or more patch panels PCBs *One or more flex PCBs with mounted MIMOS ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD can be called from SDK or a normal cmd command window, we need to set up the path environment firstly with the settings32.bat(settings64.bat for a 64 bit PC) file from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", copy it to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6_u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6_u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Connect to debug module on Processor Bus== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), set with Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> All of the above configurations can be put into a single initiative script file. Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> Run the client side DAQ software: <pre> ~ # /home/uib/focal </pre> [[Category:focal]] da943748ce88cfb7d3565b3ada44dda9cdc05f9d 1734 1733 2012-02-03T10:01:10Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Computer with Gb network capability *One or more patch panels PCBs *One or more flex PCBs with mounted MIMOS ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD can be called from SDK or a normal cmd command window, we need to set up the path environment firstly with the settings32.bat(settings64.bat for a 64 bit PC) file from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", copy it to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6_u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6_u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Connect to debug module on Processor Bus== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), set with Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> All of the above configurations can be put into a single initiative script file. Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> Run the client side DAQ software: <pre> ~ # /home/uib/focal </pre> Start the server side DAQ software: <pre> $ ./server </pre> [[Category:Focal]] cfd3386941452bcd38236236ed1a3d3fac0cff24 1735 1734 2012-02-03T10:09:04Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for data taking *Windows PC for software/firmware debugging *One or more patch panels PCBs *One or more flex PCBs with mounted MIMOS ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD can be called from SDK or a normal cmd command window, we need to set up the path environment firstly with the settings32.bat(settings64.bat for a 64 bit PC) file from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", copy it to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6_u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6_u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Connect to debug module on Processor Bus== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), set with Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> All of the above configurations can be put into a single initiative script file. Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> Run the client side DAQ software: <pre> ~ # /home/uib/focal </pre> Start the server side DAQ software: <pre> $ ./server </pre> [[Category:Focal]] df12fb4fa9778741e2ed5a4a987d84923b9ecc50 1736 1735 2012-02-03T10:09:35Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for data taking *Windows PC for software/firmware debugging *One or more patch panels PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD can be called from SDK or a normal cmd command window, we need to set up the path environment firstly with the settings32.bat(settings64.bat for a 64 bit PC) file from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", copy it to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6_u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6_u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Connect to debug module on Processor Bus== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), set with Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> All of the above configurations can be put into a single initiative script file. Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> Run the client side DAQ software: <pre> ~ # /home/uib/focal </pre> Start the server side DAQ software: <pre> $ ./server </pre> [[Category:Focal]] e5821ba35cf3349687826c62366ffb72eb5e8d18 1743 1736 2012-02-16T11:31:44Z Sya081 50 Added some text about petalinux operations and so on. wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Connect to debug module on Processor Bus== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 1 bit for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 1 bit for 1 chip [23 downto 0], HEX 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX Notes: * Only the values are allow to change, but don't change the number of digits, at least don't increase. * All configuration values start from the first non-space character of a new line and end before the first space. * No empty lines are allowed before the end of all configuration values. </pre> ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Four Mimosa chips in one detector layer share the same JTAG interface, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. ===Threshold voltages setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. [[Category:Focal]] 7f2a847d7f2076a289aac543fd5b83c583ecf214 1744 1743 2012-02-16T11:43:52Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Connect to debug module on Processor Bus== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 1 bit for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 1 bit for 1 chip [23 downto 0], HEX 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Four Mimosa chips in one detector layer share the same JTAG interface, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. ===Threshold voltages setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. [[Category:Focal]] 51b8354f28c4f40c5bcfdba6f6cf04adfaf280ed 1745 1744 2012-02-16T11:49:10Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Connect to debug module on Processor Bus== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 1 bit for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 1 bit for 1 chip [23 downto 0], HEX 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: 1~6 for detector layer 1 to 6, 7 for all. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. ===Threshold voltages setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. [[Category:Focal]] 920e41a65735d4f788c1ca2786dd558b7d006b51 1746 1745 2012-02-16T12:38:01Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 1 bit for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 1 bit for 1 chip [23 downto 0], HEX 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: 1~6 for detector layer 1 to 6, 7 for all. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. [[Category:Focal]] a7e7e6203d92ac4a40cb02ff6e84d63ede047a51 1748 1746 2012-02-16T12:43:54Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 1 bit for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 1 bit for 1 chip [23 downto 0], HEX 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st chip as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: 1~6 for detector layer 1 to 6, 7 for all. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. [[Category:Focal]] 1b68d61e42c6192ded56520e736de545a3b5f943 1749 1748 2012-02-17T14:19:37Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: 1~6 for detector layer 1 to 6, 7 for all. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. [[Category:Focal]] 445ce6bdbdee01fa2863aa42f30789f5bc873c34 1750 1749 2012-02-17T15:44:16Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. [[Category:Focal]] 2d0ff96ab12dd2c4fb8b847129f9bd7a4733da0e 1751 1750 2012-02-17T15:53:46Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. [[Category:Focal]] bf64b40cce076981ff28ecbbf2d4fdb90f676cd1 1752 1751 2012-02-22T13:58:44Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. [[Category:Focal]] ba3dc418bfcb627444ee7e9b2fcda6817fd7ace0 1753 1752 2012-02-23T16:01:59Z Sya081 50 Added descriptions of the steps for buring the FPGA configuration files and u-boot/linux images into the on-board flashes. wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 OFF (EXT_CCLK = 0) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> [[Category:Focal]] dbdf64c0106a5ba0cf88433739d6d2089cb1d1db 1754 1753 2012-02-23T16:02:51Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, don't care here 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 OFF (EXT_CCLK = 0) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> [[Category:Focal]] 3cd9cb4ee71e6cdde83627ec03f9861f6d18ab97 1755 1754 2012-02-23T16:12:36Z Sya081 50 wikitext text/x-wiki ==Overview== ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> For the switch setups, please refer to [http://www.xilinx.com/support/documentation/boards_and_kits/ug534.pdf ML605 Hardware User Guide]. ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, don't care here 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 OFF (EXT_CCLK = 0) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> ==Useful links== # [http://www.xilinx.com/support/documentation/boards_and_kits/ug533.pdf Getting Started with the Xilinx Virtex-6 FPGA ML605 Evaluation Kit] # [http://www.xilinx.com/support/documentation/boards_and_kits/xtp055.pdf ML605 Restoring Flash Contents] # [http://www.xilinx.com/support/documentation/user_guides/ug360.pdf Virtex-6 FPGA Configuration User Guide] [[Category:Focal]] b35fba02596def55c45217a6cf70b46d34ea8d45 1758 1755 2012-02-23T16:40:00Z Sya081 50 wikitext text/x-wiki ==Overview== This page contains step by step informations to setup the Focal readout electronics for MAPS detectors. ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> For the switch setups, please refer to [http://www.xilinx.com/support/documentation/boards_and_kits/ug534.pdf ML605 Hardware User Guide]. ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, don't care here 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 OFF (EXT_CCLK = 0) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> ==Useful links== # [http://www.xilinx.com/support/documentation/boards_and_kits/ug533.pdf Getting Started with the Xilinx Virtex-6 FPGA ML605 Evaluation Kit] # [http://www.xilinx.com/support/documentation/boards_and_kits/xtp055.pdf ML605 Restoring Flash Contents] # [http://www.xilinx.com/support/documentation/user_guides/ug360.pdf Virtex-6 FPGA Configuration User Guide] [[Category:Focal]] 59d2d6bd3f46d6eebfbbdac59a769e9f6fd566ce DAMARA 0 331 1737 1706 2012-02-06T12:49:17Z Kmo078 65 Added a link to ISAJET installation tips wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 05636013c26e213b4f85dced9232b8ebef8e07dd 1763 1737 2012-02-24T10:50:37Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] * [[Useful papers]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] dffb842ce2f4cb8ad39aea8d792d5cdeac9d5e4c 1765 1763 2012-02-24T10:53:30Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] ccd4df3b64e158685525664d7f772b49dabf36f8 1766 1765 2012-02-24T10:54:12Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[Starting with CTA]] * [[Starting with ATLAS]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] a2027f7ac90cd462cd7390387f283aadb7085520 1767 1766 2012-02-24T10:54:40Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[Starting with CTA]] * [[Starting with ATLAS]] * [[CTA information]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 1b7fb68b823c2ea1c47969b4c13308dc62120ded 1768 1767 2012-02-24T10:55:34Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] - how to get started with CTA * [[ATLA information]] - how to get started with ATLAS == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 1a27c3175dc7f51ad07bda4e0f7cbbd7ad24cc9c 1769 1768 2012-02-24T10:56:21Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] * [[ATLA information]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 9faa13f623834a1dd3fec421582fb22121fc4d1b 1770 1769 2012-02-24T10:56:30Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] * [[ATLAS information]] == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 02a44a5e0396815eb96432a8bbc8c5e2d79bb22c 1771 1770 2012-02-24T10:57:10Z Hsa061 18 wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] (how to get accounts, get on lists and access) * [[ATLAS information]] (how to get accounts, get on lists and access) == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] a0dd4e981b6407ba5a63e5ed49ce59280f31b720 Installing ISAJET 0 402 1738 2012-02-06T12:54:14Z Kmo078 65 Created a page with installation experience w/ ISAJET wikitext text/x-wiki First, install ypatchy on your computer. On my mac, fink install patchy works. Then, download [http://www.nhn.ou.edu/~isajet/isajet.car isajet.car] , [http://www.nhn.ou.edu/~isajet/Makefile Makefile] and [http://www.nhn.ou.edu/~isajet/isared.tar.gz isared.tar.gz] . All are found on the [http://www.nhn.ou.edu/~isajet/isared.tar.gz ISAJET site] . Put them in a folder where you want to install them, and run uncompress isared.tar.gz . Now you need to edit the makefile with the correct paths to ypatchy and your fortran compiler. An example for a mac installation may be found [http://people.uib.no/kmo078/Documents/Makefile here]. Lastly, run make isatools (takes time) and make to install isajet. 439bfcbc62286598ee0b9268b8dd15d3cd350369 1739 1738 2012-02-06T12:54:39Z Kmo078 65 wikitext text/x-wiki First, install ypatchy on your computer. On my mac, fink install patchy works. Then, download [http://www.nhn.ou.edu/~isajet/isajet.car isajet.car] , [http://www.nhn.ou.edu/~isajet/Makefile Makefile] and [http://www.nhn.ou.edu/~isajet/isared.tar.gz isared.tar.gz] . All are found on the [http://www.nhn.ou.edu/~isajet/isared.tar.gz ISAJET site] . Put them in a folder where you want to install them, and run uncompress isared.tar.gz . Now you need to edit the makefile with the correct paths to ypatchy and your fortran compiler. An example for a mac installation may be found [http://people.uib.no/kmo078/Documents/Makefile here]. Lastly, run make isatools (takes time) and make to install isajet. 9359b26909589fbddc83d78e2c21ebdf61b7f0da Synthese av VHDL 0 36 1740 1131 2012-02-06T15:18:30Z Nfyku 4 Oppdatert til Quartus 11.1 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== mentor precision Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone III med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: setenv QUARTUS_ROOTDIR /prog/altera/11.1/quartus ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] a01df9237a566e92546d5d4f2ade317ed2c5e8c8 1741 1740 2012-02-06T15:19:15Z Nfyku 4 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== mentor precision Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte opp dette skriv: presision i eit terminalvindu. Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone III med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: setenv QUARTUS_ROOTDIR /prog/altera/11.1/quartus ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] dbbc7f275285fe410b449d79ebec6cb7afa573c1 1742 1741 2012-02-07T08:39:51Z Nfyku 4 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte synteseprogrammet: precision Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone III med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: setenv QUARTUS_ROOTDIR /prog/altera/11.1/quartus ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 27f3f4b6a421c7e11bf702ffd37248e2352105ba File:Chipscope spartan.JPG 6 403 1747 2012-02-16T12:40:00Z Sya081 50 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 FOCAL - Forward Calorimeter 0 317 1756 1715 2012-02-23T16:24:41Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== The software driver for the message buffer system can be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-dcs/trunk/rculinux/dcscMsgBufferInterface/ [[Setting Up PetaLinux System]] Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk petalinux_sdk] [[Get readout box up and running]] == Download section == #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 [[Category:Mikroelektronikk]] 144ce9502417d193ecdcf80546acb6b403238110 1757 1756 2012-02-23T16:36:34Z Sya081 50 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== * [[Setting Up PetaLinux System]] * Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk petalinux_sdk] * [[Get readout box up and running]] * [[Programming Mimosa chips]] == Shopping list == 1x 2U 335mm Rack mount enclosure, Grey - 665-7712 - 556,29<br> 1x RD-125A Switch Mode PSU, 5V/15A,12V/10A - 644-6941 - 662,16<br> 3x DC/DC PoL,DOSA,2.4-5.5Vin,0.75-3.3Vo 6A - 150-758 - 116,16<br> 1x 4.20mm,housing,MiniFit,receptacle,DR,6w, - 679-5773 - 2,064<br> http://www.samtec.com/search/vita57fmc.aspx<br> 1x BULGIN - BZH01/Z0000/11 - INLET, IEC, SWITCHED, RED - F9997237 - 57,39<br> 1x MH CONNECTORS - MH3101S-8821 - COUPLER, RJ45, SHIELDED - F1122292 - 92,11<br> 12x TYCO ELECTRONICS / AMP - 5569262-1 - JACK, RJ45, MULTI PORT, 2X4 - F1162485 - 102,42<br> 2x L-COM - ECF504B-UAB - Modular Coupler - F1702375 - 91,31<br> 2x USB cables - F1076669 - F1308878 [[Category:Mikroelektronikk]] 7b0409dd47e0ad47e56ef532a6183fe4973af75d Programming Mimosa chips 0 404 1759 2012-02-23T17:17:13Z Sya081 50 New page. more to be added. wikitext text/x-wiki ==Overview== The system uses a C progarm named xsvfPlayer to read in JTAG configurations from an xsvf format binary file, and set up the JTAG pins to configure the front-end Mimosa chips. The xsvf binary file is generated from a readable text format svf file with Xilinx SVF-to-XSVF Writer - svf2xsvf. In our system, we need to configure about 100 mimosa chips with different threshold voltages and other settings, sometime we also need to change these values online, it's not practical to generate a xsvf file for every chip. Instead, it's possible to have a template xsvf file and hack into this file to modify the corresponded byte values for every chip. So we need to know some fundamental informations of the xsvf file. ==Multi-device JTAG chain== Normally when we want to access one of the devices in the JTAG chain with more than one device, we need to bypass all the others. When those devices are bypassed, they just connect their 1-bit bypass registers into the JTAG chain, it looks as belwo for the 1st chip in a 4-chip JTAG chain: <pre> _______chip1________ _2_ _3_ _4_ TDI --> |0|1|..........|127| --> |0| -> |0| -> |0| -> TDO -------------------- --- --- --- </pre> The JTAG bypass command is the one with all 1s for all command bits, and normally we can write zeros to the bypass registers. ==Useful Links== #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] [[Category:Focal]] 2c4abc660586a90117954bc7c6f0a1cc6d4a4139 1760 1759 2012-02-23T17:18:04Z Sya081 50 wikitext text/x-wiki ==Overview== The system uses a C progarm named xsvfPlayer to read in JTAG configurations from an xsvf format binary file, and set up the JTAG pins to configure the front-end Mimosa chips. The xsvf binary file is generated from a readable text format svf file with Xilinx SVF-to-XSVF Writer - svf2xsvf. In our system, we need to configure about 100 mimosa chips with different threshold voltages and other settings, sometime we also need to change these values online, it's not practical to generate a xsvf file for every chip. Instead, it's possible to have a template xsvf file and hack into this file to modify the corresponded byte values for every chip. So we need to know some fundamental informations of the xsvf file. ==Multi-device JTAG chain== Normally when we want to access one of the devices in the JTAG chain with more than one device, we need to bypass all the others. When those devices are bypassed, they just connect their 1-bit bypass registers into the JTAG chain, it looks as below for the 1st chip in a 4-chip JTAG chain: <pre> _______chip1________ _2_ _3_ _4_ TDI --> |0|1|..........|127| --> |0| -> |0| -> |0| -> TDO -------------------- --- --- --- </pre> The JTAG bypass command is the one with all 1s for all command bits, and normally we can write zeros to the bypass registers. ==Useful Links== #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] [[Category:Focal]] 9b61675d1c20570987d3ae132c35ce8264268f23 1761 1760 2012-02-23T18:03:15Z Sya081 50 wikitext text/x-wiki ==Overview== The system uses a C progarm named xsvfPlayer to read in JTAG configurations from an xsvf format binary file, and set up the JTAG pins to configure the front-end Mimosa chips. The xsvf binary file is generated from a readable text format svf file with Xilinx SVF-to-XSVF Writer - svf2xsvf. In our system, we need to configure about 100 mimosa chips with different threshold voltages and other settings, sometime we also need to change these values online, it's not practical to generate a xsvf file for every chip. Instead, it's possible to have a template xsvf file and hack into this file to modify the corresponded byte values for every chip. So we need to know some fundamental informations of the xsvf file. ==Multi-device JTAG chain== Normally when we want to access one of the devices in a JTAG chain with more than one device, we need to bypass all the others. When those devices are bypassed, they just connect their 1-bit bypass registers into the JTAG chain, it looks as below for the 1st chip in a 4-chip JTAG chain: <pre> _______chip1________ _2_ _3_ _4_ TDI --> |0|1|..........|127| --> |0| -> |0| -> |0| -> TDO -------------------- --- --- --- </pre> The JTAG bypass command is the one with all 1s for all command bits, and normally we can write zeros to the bypass registers. Instead of adding bypass commands and all bypass register bits for every JTAG commands, there are header and trailer commands used to tell the JTAG controller to automatically add some header/trailer bits for instructions and data. TIR/HIR/TDR/HDR are the SVF header and trailer instructions, for Mimosa chips which have 5-bit commands, the 1st chip in a 4-chip JTAG chain should have a header/trailer setting like this: <pre> TIR 0 ; // No trailer in command HIR 15 TDI (7fff) SMASK (7fff) ; // 15 bits of bypass commands(all 1s) ahead of every command for the other 3 chips TDR 0 ; // No trailer in data HDR 3 TDI (00) SMASK (00) ; // 3 bits of 0s ahead of every data output for the three bypass registers. </pre> ==SVF to XSVF== If we want to configure the 128-bit DAC register of the second Mimosa chip, normally we use svf commands like: <pre> TIR 5 TDI (1f) SMASK (1f) ; // 5 bits bypass command for chip1 HIR 10 TDI (3ff) SMASK (3ff) ; // 10 bits bypass commands for chip3 and chip4; TDR 1 TDI (00) SMASK (00) ; // 1 bit for bypass register of chip1 HDR 2 TDI (00) SMASK (00) ; // 2 bits for bypass registers of chip3 and chip4 SIR 5 TDI (0F) SMASK(1F); // command: setting BIAS_DAC(0x0F) SDR 128 TDI (64327676202076763220280a0a0a0a64); // 128 bit output data, without input check. </pre> After conversion we can get a text format xsvf file with commands as below: <pre> XREPEAT(07) 0x20 XRUNTEST(04) 0x00000000 XSIR(02) 0x14 0x0fbfff XSDRSIZE(08) 0x00000083 XTDOMASK(01) 0x0000000000000000000000000000000000 XSDRTDO(09) 0x0190c9d9d88081d9d8c880a02828282990 0x0000000000000000000000000000000000 XCOMPLETE(00) </pre> Notes: the numbers in bracket are the codes for the corresponded commands. Dump of the binary format xsvf file: <pre> 00000000h: 07 20 04 00 00 00 00 02 14 0F BF FF 08 00 00 00 00000010h: 83 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000020h: 00 00 00 09 01 90 C9 D9 D8 80 81 D9 D8 C8 80 A0 00000030h: 28 28 28 29 90 00 00 00 00 00 00 00 00 00 00 00 00000040h: 00 00 00 00 00 00 00 </pre> ==Descriptions of xsvf file== Firstly specify the XREPEAT value, which is the number of times that TDO is tested against the expected value before a failure is issued: <pre> XREPEAT(07) 0x20 </pre> then specify the number of TCK cycles to be applied in the Run-Test/Idle state after the end of one instruction/data command: <pre> XRUNTEST(04) 0x00000000 </pre> the instruction becomes: 5 bits of bypass command 0x1F for chip1, 5 bits of 0x0F and two other five bits of 0x1F = b'11111011111111111111 = 0x0fbfff; <pre> XSIR(02) 0x14 0x0fbfff //0x14 is the number of instruction bits. </pre> then follows with the number of data bits: <pre> XSDRSIZE(08) 0x00000083 //128 bits + 3 bypass bits. </pre> here we don't check the TDO out, so TDOMASK is set to all 0s: <pre> XTDOMASK(01) 0x0000000000000000000000000000000000 </pre> shift out the number of bit as specified above, the value is added with one 0 at the begining and two 0s at the end: b'0 + 0x64327676202076763220280a0a0a0a64 + b'00 = 0x0190c9d9d88081d9d8c880a02828282990, compare the TDO value with the second argument, here we don't check, the second parameter is filled with all 0s. <pre> XSDRTDO(09) 0x0190c9d9d88081d9d8c880a02828282990 0x0000000000000000000000000000000000 </pre> finish the operation: <pre> XCOMPLETE(00) </pre> ==Programming Mimosa chips== To be added. ==Useful Links== #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] [[Category:Focal]] 67660d3f5a30d0b26197a119e13b408ca89f9b1c 1762 1761 2012-02-23T18:14:25Z Sya081 50 wikitext text/x-wiki ==Overview== The system uses a C progarm named xsvfPlayer to read in JTAG configurations from an xsvf format binary file, and set up the JTAG pins to configure the front-end Mimosa chips. The xsvf binary file is generated from a readable text format svf file with Xilinx SVF-to-XSVF Writer - svf2xsvf. In our system, we need to configure about 100 mimosa chips with different threshold voltages and other settings, sometime we also need to change these values online, it's not practical to generate a xsvf file for every chip. Instead, it's possible to have a template xsvf file and hack into this file to modify the corresponded byte values for every chip. So we need to know some fundamental informations of the xsvf file. ==Multi-device JTAG chain== Normally when we want to access one of the devices in a JTAG chain with more than one device, we need to bypass all the others. When those devices are bypassed, they just connect their 1-bit bypass registers into the JTAG chain, it looks as below for the 1st chip in a 4-chip JTAG chain: <pre> _______chip1________ _2_ _3_ _4_ TDI --> |0|1|..........|127| --> |0| -> |0| -> |0| -> TDO -------------------- --- --- --- </pre> The JTAG bypass command is the one with all 1s for all command bits, and normally we can write zeros to the bypass registers. Instead of adding bypass commands and all bypass register bits for every JTAG commands, there are header and trailer commands used to tell the JTAG controller to automatically add some header/trailer bits for instructions and data. TIR/HIR/TDR/HDR are the SVF header and trailer instructions, for Mimosa chips which have 5-bit commands, the 1st chip in a 4-chip JTAG chain should have a header/trailer setting like this: <pre> TIR 0 ; // No trailer in command HIR 15 TDI (7fff) SMASK (7fff) ; // 15 bits of bypass commands(all 1s) ahead of every command for the other 3 chips TDR 0 ; // No trailer in data HDR 3 TDI (00) SMASK (00) ; // 3 bits of 0s ahead of every data output for the three bypass registers. </pre> ==SVF to XSVF== If we want to configure the 128-bit DAC register of the second Mimosa chip, normally we use svf commands like: <pre> TIR 5 TDI (1f) SMASK (1f) ; // 5 bits bypass command for chip1 HIR 10 TDI (3ff) SMASK (3ff) ; // 10 bits bypass commands for chip3 and chip4; TDR 1 TDI (00) SMASK (00) ; // 1 bit for bypass register of chip1 HDR 2 TDI (00) SMASK (00) ; // 2 bits for bypass registers of chip3 and chip4 SIR 5 TDI (0F) SMASK(1F); // command: setting BIAS_DAC(0x0F) SDR 128 TDI (64327676202076763220280a0a0a0a64); // 128 bit output data, without input check. </pre> After conversion we can get a text format xsvf file with commands as below: <pre> XREPEAT(07) 0x20 XRUNTEST(04) 0x00000000 XSIR(02) 0x14 0x0fbfff XSDRSIZE(08) 0x00000083 XTDOMASK(01) 0x0000000000000000000000000000000000 XSDRTDO(09) 0x0190c9d9d88081d9d8c880a02828282990 0x0000000000000000000000000000000000 XCOMPLETE(00) </pre> Notes: the numbers in bracket are the codes for the corresponded commands. Dump of the binary format xsvf file: <pre> 00000000h: 07 20 04 00 00 00 00 02 14 0F BF FF 08 00 00 00 00000010h: 83 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00000020h: 00 00 00 09 01 90 C9 D9 D8 80 81 D9 D8 C8 80 A0 00000030h: 28 28 28 29 90 00 00 00 00 00 00 00 00 00 00 00 00000040h: 00 00 00 00 00 00 00 </pre> ==Descriptions of xsvf file== Firstly specify the XREPEAT value, which is the number of times that TDO is tested against the expected value before a failure is issued: <pre> XREPEAT(07) 0x20 </pre> then specify the number of TCK cycles to be applied in the Run-Test/Idle state after the end of one instruction/data command: <pre> XRUNTEST(04) 0x00000000 </pre> the instruction becomes: 5 bits of bypass command 0x1F for chip1, 5 bits of 0x0F and two other five bits of 0x1F = b'11111011111111111111 = 0x0fbfff; <pre> XSIR(02) 0x14 0x0fbfff //0x14 is the number of instruction bits. </pre> then follows with the number of data bits: <pre> XSDRSIZE(08) 0x00000083 //128 bits + 3 bypass bits. </pre> here we don't check the TDO out, so TDOMASK is set to all 0s, with 0s being added at the beginning(17 bytes): <pre> XTDOMASK(01) 0x0000000000000000000000000000000000 </pre> shift out the number of bits as specified above, the value is added with one 0 at the begining and two 0s at the end: b'0 + 0x64327676202076763220280a0a0a0a64 + b'00 = 0x0190c9d9d88081d9d8c880a02828282990, compare the TDO value with the second argument, here we don't check, it is filled with all 0s. 0s being added to these two numbers at the beginning(17 bytes): <pre> XSDRTDO(09) 0x0190c9d9d88081d9d8c880a02828282990 0x0000000000000000000000000000000000 </pre> finish the operation: <pre> XCOMPLETE(00) </pre> ==Programming Mimosa chips== To be added. ==Useful Links== #[[Media:svf_specification.pdf|Serial Vector Format(SVF) Specification]] #[[Media:svf_xilinx.pdf|SVF and XSVF File Formats for Xilinx Devices]] [[Category:Focal]] 38d3430f5614f6b5f313589342a57815032f3009 Useful papers 0 405 1764 2012-02-24T10:51:26Z Hsa061 18 Created page with ' Astroparticle ----------------------- * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf' wikitext text/x-wiki Astroparticle ----------------------- * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf 6eb11be726c62cb095760fcee3a3463af39728d8 ParticlePhysicsGroupMeetings 0 139 1772 1691 2012-02-24T11:24:33Z Nfyal 26 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 10p course. Active attendance will be one of the requirements for the students. Planned 2010 subjects include: * New master student project proposals * SUSY seminars by Per Osland * ATLAS technical tutorials * LHC updates * Possible some invited speakers == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] fbeddc86c69135425668220f4275288fa4fee9bd File:ATLAScomp+analfeb2012.pdf 6 406 1773 2012-02-24T11:26:00Z Nfyal 26 Review of ATLAS analysis and computing structures, seen from UiB wikitext text/x-wiki Review of ATLAS analysis and computing structures, seen from UiB 45e6871a338d1bbf2aff2326ae52d2b04f2b3f39 ParticlePhysicsGroupMeetings 0 139 1774 1772 2012-02-24T11:29:01Z Nfyal 26 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 5p course. Active attendance will be one of the requirements for the students. In 2011 the seminars were given by W.Liebig in a form of a short course. == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] e9fc4b8fc6564f09366cf6edf11b67bb6c69724e 1775 1774 2012-02-24T11:48:50Z Nfyal 26 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 5p course. Active attendance will be one of the requirements for the students. In 2011 the seminars were given by W.Liebig in a form of a short course. == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] Talks from Bergen in CERN indico (some of them visible only for ATLAS or ALICE members)<br> *[https://indico.cern.ch/search.py?categId=0&p=bergen&f=&collections=&startDate=&endDate=&sortField=&sortOrder=d] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] b7d98fad0dd5f46f4419497dfdb3e17eb721c798 1776 1775 2012-02-24T11:49:38Z Nfyal 26 wikitext text/x-wiki == Seminar information == Our seminar time is (some) wednesdays at 14:15, usually the seminars are in room 316. Seminars will be announced on the IFT-Particle-Seminar list. The LHC seminars are part of the "advanced LHC instrumentation" special pensum 5p course. Active attendance will be one of the requirements for the students. In 2011 the seminars were given by W.Liebig in a form of a short course. == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] Talks from Bergen in CERN indico (some of them visible only for ATLAS or ALICE members)<br> * Talks and events from UiB at CERN [https://indico.cern.ch/search.py?categId=0&p=bergen&f=&collections=&startDate=&endDate=&sortField=&sortOrder=d] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] bc5f3e24153ac72da58a83f59915e3482087cca9 Get readout box up and running 0 399 1777 1758 2012-03-01T09:27:11Z Sya081 50 wikitext text/x-wiki ==Overview== This page contains step by step informations to setup the Focal readout electronics for MAPS detectors. ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> For the switch setups, please refer to [http://www.xilinx.com/support/documentation/boards_and_kits/ug534.pdf ML605 Hardware User Guide]. ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, don't care here 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 OFF (EXT_CCLK = 0) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> ==LED definitions== * D1: on: Test pattern out mode (mode 2) of Spartan1, off: normal mode; * D2: on: All enabled channels have correct patterns, off: at least one channel(1/4 of a chip) of pattern mismatch; * D3: flash: 1Hz from Spartan1 to Spartan2, maybe soldered up side down for some boxes; * D4: As D1, for Spartan2; * D5: As D2, for Spartan2; ==Useful links== # [http://www.xilinx.com/support/documentation/boards_and_kits/ug533.pdf Getting Started with the Xilinx Virtex-6 FPGA ML605 Evaluation Kit] # [http://www.xilinx.com/support/documentation/boards_and_kits/xtp055.pdf ML605 Restoring Flash Contents] # [http://www.xilinx.com/support/documentation/user_guides/ug360.pdf Virtex-6 FPGA Configuration User Guide] [[Category:Focal]] 2e45251a7764a7bc207faa29c35bbd0655bb6165 1778 1777 2012-03-01T11:03:49Z Sya081 50 wikitext text/x-wiki ==Overview== This page contains step by step informations to setup the Focal readout electronics for MAPS detectors. ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ===Startup scripts=== For the automatic running of the user initialization scripts, you can't add them directly to the romfs script files like /etc/rc.sysinit, because there files are generated every time during Petalinux compilation and all custom modification will be overwritten. The source files for these initialization scrips are located in "~petalinux-dist/user/sys_init/data/etc/rc", normally you should put your custom startup commands in "start" file, but according to the Makefile, this file doesn't work properly at the moment, so we add our scripts to the end of "sysinit" file: <pre> echo "Running user init scripts." /home/test/init.sh </pre> After running "make romfs", you will find that these scripts are added into the romfs file "/etc/rc.sysinit". ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: b'00=chip1(J10); b'10=chip2(J11); b'01=chip3(J13); b'11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> For the switch setups, please refer to [http://www.xilinx.com/support/documentation/boards_and_kits/ug534.pdf ML605 Hardware User Guide]. ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, don't care here 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 OFF (EXT_CCLK = 0) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> ==LED definitions== * D1: on: Test pattern out mode (mode 2) of Spartan1, off: normal mode; * D2: on: All enabled channels have correct patterns, off: at least one channel(1/4 of a chip) of pattern mismatch; * D3: flash: 1Hz from Spartan1 to Spartan2, maybe soldered up side down for some boxes; * D4: As D1, for Spartan2; * D5: As D2, for Spartan2; ==Useful links== # [http://www.xilinx.com/support/documentation/boards_and_kits/ug533.pdf Getting Started with the Xilinx Virtex-6 FPGA ML605 Evaluation Kit] # [http://www.xilinx.com/support/documentation/boards_and_kits/xtp055.pdf ML605 Restoring Flash Contents] # [http://www.xilinx.com/support/documentation/user_guides/ug360.pdf Virtex-6 FPGA Configuration User Guide] [[Category:Focal]] e8b752610b6d0483d1acda2d84444170cb3b4e84 1779 1778 2012-03-01T15:49:17Z Sya081 50 wikitext text/x-wiki ==Overview== This page contains step by step informations to setup the Focal readout electronics for MAPS detectors. ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ===Startup scripts=== For the automatic running of the user initialization scripts, you can't add them directly to the romfs script files like /etc/rc.sysinit, because there files are generated every time during Petalinux compilation and all custom modification will be overwritten. The source files for these initialization scrips are located in "~petalinux-dist/user/sys_init/data/etc/rc", normally you should put your custom startup commands in "start" file, but according to the Makefile, this file doesn't work properly at the moment, so we add our scripts to the end of "sysinit" file: <pre> echo "Running user init scripts." /home/test/init.sh </pre> After running "make romfs", you will find that these scripts are added into the romfs file "/etc/rc.sysinit". ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: 0b00=chip1(J10); 0b10=chip2(J11); 0b01=chip3(J13); 0b11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> For the switch setups, please refer to [http://www.xilinx.com/support/documentation/boards_and_kits/ug534.pdf ML605 Hardware User Guide]. ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, don't care here 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 OFF (EXT_CCLK = 0) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> ==LED definitions== * D1: on: Test pattern out mode (mode 2) of Spartan1, off: normal mode; * D2: on: All enabled channels have correct patterns, off: at least one channel(1/4 of a chip) of pattern mismatch; * D3: flash: 1Hz from Spartan1 to Spartan2, maybe soldered up side down for some boxes; * D4: As D1, for Spartan2; * D5: As D2, for Spartan2; ==Useful links== # [http://www.xilinx.com/support/documentation/boards_and_kits/ug533.pdf Getting Started with the Xilinx Virtex-6 FPGA ML605 Evaluation Kit] # [http://www.xilinx.com/support/documentation/boards_and_kits/xtp055.pdf ML605 Restoring Flash Contents] # [http://www.xilinx.com/support/documentation/user_guides/ug360.pdf Virtex-6 FPGA Configuration User Guide] [[Category:Focal]] c3a574449ba759b643e5c7feec31f87d44cba0a1 Installing DarkSusy 0 398 1780 1729 2012-03-12T08:55:00Z Kmo078 65 Added installation of exclusion routines wikitext text/x-wiki ==Installing== To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' *If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' *If you run mac (tested on mac osx 10.6), the c++ and fortran compilers will not compile for the same architecture unless you preface configure command with ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. ==Compiling programs== To compile your own Fortran program written with DarkSusy, the call should be similar to (if you've configured with gfortran): ''gfortran -I$PWD/../include -L$PWD/../lib -o ProgramName ProgramName.f -ldarksusy -lFH -lHB'' For examples, one can look in the makefile in ''test''. ==Making your own exclusion routines== To make your own exclusion routine, it is good to start with ''dsacbnd9.f'' in ''darksusy-x.y.z/src/ac''. Copy this into your run directory, and change the name to, for example ''dsacbndX.f where ''X'' may not be 0-9, since these are in use. Make sure to change the name on the first line in the file as well. Now you may call: ''call dsacbndX'' in your DarkSusy code as ''dsmain'' demonstrates. ''gfortran -I$PWD/../include -L$PWD/../lib -o ProgramName ProgramName.f dsacbndX.f -ldarksusy -lFH -lHB'' [[Category:Installing]] 5d269bde8467a0feb8922695cde07c01d80afac7 1781 1780 2012-03-12T08:56:06Z Kmo078 65 wikitext text/x-wiki ==Installing== To install DarkSusy, make sure to download both the latest version and the galprop patch from the DarkSusy [http://www.physto.se/~edsjo/darksusy/ page]. Unpack darksusy-5.0.5.tar.gz, and move the patch into the resulting folder(darksusy-5.0.5). Now, unpack the patch as well with: ''tar zxvf galprop-patch.tar.gz'' *If you are running linux, run ''./configure'' if you wish to compile with g77 or ''./conf.gfortran'' for gfortran, then ''make'' and ''sudo make install'' *If you run mac (tested on mac osx 10.6), the c++ and fortran compilers will not compile for the same architecture unless you preface configure command with ''CFLAGS="-m32"''. In the end, move to the ''test'' directory, and run ''./dstest''. You should receive output similar to the file ''dstest.output''. ==Compiling programs== To compile your own Fortran program written with DarkSusy, the call should be similar to (if you've configured with gfortran): ''gfortran -I$PWD/../include -L$PWD/../lib -o ProgramName ProgramName.f -ldarksusy -lFH -lHB'' For examples, one can look in the makefile in ''test''. ==Making your own exclusion routines== To make your own exclusion routine, it is good to start with ''dsacbnd9.f'' in ''darksusy-x.y.z/src/ac'' . Copy this into your run directory, and change the name to, for example ''dsacbndX.f '' where ''X''' should not be 0-9, since these are in use. (Probably best to avoid a number altogether) Make sure to change the name on the first line in the file as well. Now you may call: ''call dsacbndX'' in your DarkSusy code as ''dsmain'' demonstrates. ''gfortran -I$PWD/../include -L$PWD/../lib -o ProgramName ProgramName.f dsacbndX.f -ldarksusy -lFH -lHB'' [[Category:Installing]] da4d1049360510f1164bfd53f37beca9636e2c05 ATLASThesesNotes 0 234 1782 1727 2012-03-15T16:07:18Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] b048b79bafa7dd8442d053d9604bb2ce6f960882 1783 1782 2012-03-15T16:07:53Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] 6b7b72422a76fb9352bf4af0244b2934e7817073 File:Arshak Thesis.pdf 6 407 1784 2012-03-15T16:09:15Z Nfyal 26 PhD Thesis of Arshak Tonoyan presenting the first in the LHC history measurement of the top quark charge. wikitext text/x-wiki PhD Thesis of Arshak Tonoyan presenting the first in the LHC history measurement of the top quark charge. d5e29946745ab6722bad91ea377c7d0c1e79f3b3 Useful papers 0 405 1785 1764 2012-04-10T09:10:00Z Kmo078 65 wikitext text/x-wiki Astroparticle ----------------------- * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: 9abb8da29949649845a8665366ba02d592ce8ef8 1787 1785 2012-04-10T09:13:22Z Kmo078 65 wikitext text/x-wiki Astroparticle ----------------------- * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] 552283f0fab56bc5f1c628c3d1d83435461b2a88 1788 1787 2012-04-10T09:13:47Z Kmo078 65 wikitext text/x-wiki Astroparticle ----------------------- * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[RapportOlgaMaster.pdf]] f9228eac19070deeea70b3fdae92c187f29b2358 1789 1788 2012-04-10T09:13:57Z Kmo078 65 wikitext text/x-wiki Astroparticle ----------------------- * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] 552283f0fab56bc5f1c628c3d1d83435461b2a88 1796 1789 2012-04-19T10:47:33Z Hsa061 18 wikitext text/x-wiki Astroparticle ----------------------- * Servant: http://arxiv.org/abs/1204.2797 * Weinger: http://arxiv.org/abs/1204.2797 * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] a19e401ae2a8b1d58959855eba76791aa7484a4d 1797 1796 2012-04-19T10:48:13Z Hsa061 18 wikitext text/x-wiki Astroparticle ----------------------- * Weinger: http://arxiv.org/abs/1204.2797 * Servant: http://arxiv.org/abs/0912.0004 * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] 52c864adb956126c03399aaff36eaec1d4b59927 1810 1797 2012-07-31T09:00:06Z Hsa061 18 wikitext text/x-wiki Astroparticle ----------------------- * Fermi-Lat: http://arxiv.org/abs/1205.2739 * Weinger: http://arxiv.org/abs/1204.2797 * Servant: http://arxiv.org/abs/0912.0004 * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] a0a3a8a3d88f47c8ce1ad38c47a653b158989063 1811 1810 2012-07-31T09:03:17Z Hsa061 18 wikitext text/x-wiki Astroparticle ----------------------- * Fermi-Lat: http://arxiv.org/abs/1205.2739 * Weniger: http://arxiv.org/abs/1204.2797 * Servant: http://arxiv.org/abs/0912.0004 * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] d49e523e406e2a86f7af4570ab7062d2e75fe09f 1815 1811 2012-08-31T09:01:10Z St01355 57 wikitext text/x-wiki Astroparticle ----------------------- * Investigating Gamma-Ray Lines from Dark Matter with Future Observatories: http://arxiv.org/abs/1207.6773 * Fermi-Lat: http://arxiv.org/abs/1205.2739 * Weniger: http://arxiv.org/abs/1204.2797 * Servant: http://arxiv.org/abs/0912.0004 * Profuma: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] 414f9251556f661a4b3c782c7ff3a7730fe66d51 File:RapportOlgaMaster.pdf 6 408 1786 2012-04-10T09:12:39Z Kmo078 65 Master's Thesis by Olga Bessidskaia at Stockholm University 2012 wikitext text/x-wiki Master's Thesis by Olga Bessidskaia at Stockholm University 2012 4a6184d2fe9ff61e30804c1bbd2f369a2c256023 Coming to CERN 0 203 1790 1438 2012-04-16T09:29:56Z Dfe002 7 /* How to get to CERN */ updated bus/tram wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23 or 57 to Blandonnet, and then change to the tram 14 "CERN". There is also a CERN shuttle bus to/from the airport ([https://espace.cern.ch/info-RegularShuttleService/default.aspx timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 0305d7e011a436ca840cee564edd306115ed40cd 1791 1790 2012-04-16T09:34:49Z Dfe002 7 /* How to get to CERN */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23 or 57 to Blandonnet, and then change to the tram 14 "CERN". Check [www.tpg.ch tpg.ch] for the timetable. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 313f992b636b85cc93fa346e7b722ed61c63ac9e 1792 1791 2012-04-16T09:35:06Z Dfe002 7 /* How to get to CERN */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23 or 57 to Blandonnet, and then change to the tram 14 "CERN". Check [http://www.tpg.ch tpg.ch] for the timetable. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 4a51544fc924b953a9b8f3ddcecbb9b981af8f30 File:Stockholmpresentation120323.pdf 6 409 1793 2012-04-18T14:16:13Z Kmo078 65 Presentation given in Stockholm by Knut Dundas Morå wikitext text/x-wiki Presentation given in Stockholm by Knut Dundas Morå 90faa4bfe180963af65c7eef9d09c05c0822f2d3 DamaraResults 0 348 1794 1698 2012-04-18T14:19:42Z Kmo078 65 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes * ''Thesis plans, Stockholm meeting'' [File:Stockholmpresentation120323.pdf] (12.mars 2012), Knut Morå == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844 ATL-COM-PHYS-2011-1619] (25. november 2011) == Theses == === Master === === PhD === 50149baeada7e61c40cff63b69228ff31f2175fa 1795 1794 2012-04-18T14:20:05Z Kmo078 65 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes * Thesis plans, Stockholm meeting [File:Stockholmpresentation120323.pdf] (12.mars 2012), Knut Morå == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844 ATL-COM-PHYS-2011-1619] (25. november 2011) == Theses == === Master === === PhD === 9b7daada40f9af1d418b813982022b2c68c454a5 1809 1795 2012-06-29T10:24:12Z Kmo078 65 La til min presentasjon ved Katten siden Twiki-oppdateringer ble oppfordret. wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes * "Higgs-Mekanismen", presentasjon for Bergen Katedralskole (19.12.2011) Knut Morå == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes * Thesis plans, Stockholm meeting [File:Stockholmpresentation120323.pdf] (12.mars 2012), Knut Morå == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844 ATL-COM-PHYS-2011-1619] (25. november 2011) == Theses == === Master === === PhD === ae8f5e1acfa6f65793fe71b5864ee74508fefa24 IC studio 0 28 1798 1679 2012-04-23T08:39:58Z Nfyku 4 Oppdatert til icflow_2008.2o wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. ssh -X mikroserver2 /prog/design_kits/micro.init.csh ==Starte opp IC studio== Skriv i et terminalvindu: # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 tcsh source /prog/design_kits/mentor_init/mentor-s35d4.csh unsetenv LANG ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. Om du ønsker å bruke Mentor programmene fra en Windows-PC så se på forklaringene i [[Teknisk hjelp]] ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: /prog/mentor/icflow_2008.2o/2008.2o_rhelx86linux/icflow_home/shared/htmldocs start f.eks. firefox slik: firefox file:/prog/mentor/icflow_2008.2o/2008.2o_rhelx86linux/icflow_home/bin/icstudio/_bk_icda.html Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: acroread /prog/mentor/icflow_2008.2o/2008.2o_rhelx86linux/icflow_home/shared/pdfdocs/daic_user.pdf ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". [[Category:Mikroelektronikk]] 84eef36e4f1aff5a4b860e49e05ecc2352c75bcf 1799 1798 2012-04-23T09:05:21Z Nfyku 4 wikitext text/x-wiki = Kom igang med IC studio = Dette er en kort beskrivelse av hvordan man bruker IC studio for å tegne kretsskjema, lage nettliste og kjøre simulering. Første gang man skal arbeide med Mentor Graphics verktøy skriv følgende kommando og start deretter et nytt skall. Dette skal du kun gjøre en gang for din konto. ssh -X mikroserver2 /prog/design_kits/micro.init.csh ==Starte opp IC studio== Skriv i et terminalvindu: # Slå av autorepeat for funksjonstaster xset -r 67 -r 68 -r 69 -r 70 -r 71 -r 72 -r 73 -r 74 -r 75 -r 76 -r 95 -r 96 ssh -X mikroserver2 tcsh source /prog/design_kits/mentor_init/mentor-s35d4.csh unsetenv LANG ams_icstudio -project mgc/mitt_prosjekt -tech c35b4c3 & Du kan endre mitt_prosjekt til det du selv ønsker, men uten mellomrom. Kommandoen starter IC studio med AMS-biblioteket til prosessen c35b4c3. Om du ønsker å bruke Mentor programmene fra en Windows-PC så se på forklaringene i [[Teknisk hjelp]] ==Dokumentasjon== Trenger du hjelp til skjemategning og/eller Design Architect generelt, kan du finne dokumentasjon her: $MGC_HOME/shared/htmldocs start f.eks. firefox slik: firefox file:///$MGC_HOME/shared/infohubs/common/html/index.html\?infohub=icstudio_ih\&tab=docs Det finnes også pdf-utgaver av dokumentasjonen. Den kan leses slik: acroread $MGC_HOME/shared/pdfdocs/daic_user.pdf ==Åpne et nytt skjema== Høyre-klikk Library-vinduet. Velg "New Library" og fyll inn f.eks. "My designs". Klikk på det nye biblioteket og høyre-klikk deretter i Cell-vinduet og velg "New View". Sett "View Type" til Schematic, slik som vist i figuren. Gi det nye skjemaet et navn. Deretter trykker du Finish. Du skal nå få opp Design-Architect-IC. [[Image:IC_studio_new_view.png|800px]] velg "Show/Hide Library Palette" fra ikonlisten til venstre, nr 2 fra bunnen. Trykk på "HIT-Kit Utilities" Velg symboler fra AMS-biblioteket eller fra standard-biblioteket. AMS-biblioteket inneholder komponenter som er mulig å lage i c35b4-prosessen. Standard-biblioteket inneholder standard-komponenter og ideelle komponenter. Fra menyen til høyre: Velg AMS Library eller Library. I Design Architect-IC kalles skjemasymbol for "instance". Symboler for spenningsnett (GND og VDD) finnes ved å velge: AMS Library - etc - cell power. Det er enklest å bruke ideelle motstander og kondensatorer hvis du bare skal gjøre en simulering. Hvis du bruker slike komponenter må du legge til en "property" som kalles "INSTPAR" med den verdien motstanden eller kondensatoren skal ha, for eksempel 1k eller 1p. Dette gjøres ved å høyre-klikke på komponenten, velge properties->add og skrive inn INSTPAR på property name og verdien på komponenten under property value. For å tegne ledninger: Velg Add &#150; Wire fra menyen til høyre, eller trykk F3 på tastaturet. En ledning avsluttes ved å trykke Enter. Trykk Esc for å avslutte add wire mode. Sett navn på nettene (forbindelsene) som inn, ut, GND. Velg: Name &#150; Net fra menyen til høyre. Net med samme navn blir koblet i sammen selv om det ikke er kabel mellom de. Kilder (spenning-, strøm- og signalkilder) finnes under Add->Source i fil-menyen på toppen. Gjør innstillinger i dialogboksen, trykk OK og plasser symbolet på skjemaet. For GBW målinger bruker du en AC kilde med magnitude på 1. For å se signalet i et tids spekter kan du velge en sinusspenning med frekvens på f. eks. 1000Hz og amplitude 1V. Transistorene finnes under "Ams-Library &#8594; Devices &#8594; MOS", bruk nmos4 for nmos og pmos4 for pmos Skjemaet lagres ved å trykke Check & Save fra menyen til høyre. ==Design Viewpoint== Før vi kan begynne med simulering må vi sette &#147;design viewpoint&#148;. Velg <s>AMS DVE </s> "AMS Utilities &#8594; create viewpoint"fra menyen til høyre eventuellt "Hit-Kit Utilities &#8594; create viewpoint" fra fil-menyen på toppen. Skriv inn stien til prosjektkatalogen (samme som cell name i ICstudio, dvs $navn_på_library/default.group/logic.views/navn_på_cell) og kontroller at de andre innstillingene stemmer, dvs C35B4 og Device skal være nedsunket. Når du har trykket OK genereres en ny underkatalog som inneholder info om den prosessen vi skal bruke. I denne katalogen vil du etterhvert også finne nettlisten (en tekstfil som beskriver kretsen). Dette trenger du bare gjøre én gang, men du kan ikke gjøre det før etter du har trykket Check & Save første gang. ==Simulering== Når vi skal simulere må vi gå inn i &#147;simuleringsmodus&#148;. Velg Simulation fra menyen til høyre. Siden vi bare har ett viewpoint i prosjektet vårt skal dette være valgt i Config Name (øverst). Velg OK. Så er vi i simuleringsmodus. Vi må fortelle netlisteren hvilket nett som er 0-referanse (jord/GND). Velg Session &#150; Netlister fra menyen til høyre. Skriv inn under Set Node 0 navnet du satte på jord-nettet i skjemaet. Trykk OK. Vi må velge prosesshjørne. Det finnes under menyen oppe: HIT KIT Utilities / Set simulation models. Her trenger du ikke endre på noe, men du må ha vært innom her og trykket OK for å bekrefte &#147;typical&#148;. Setup &#8594; Forces definerer nettverk verdiene (f. eks. input og vdd). ==Analyser, prober og plot== Vi må sette prober og analyser for å få noe fornuftig ut av simulatoren. Velg f. eks. inngangen og utgangen på kretsen ved å klikke på skjemaet mens du holder nede control. Velg Wave Outputs fra menyen til høyre. Under object velger du en eller flere av nettene du har valgt, under analysis velger du analyse metoden og under modifier velger du hvilke signal du vil se. Du kan velge flere typer ved å holde nede control. Tilslutt trykker du på knappen med tegningen av et ark med et pluss tegn på. Velg Analyses (igjen fra menyen til høyre) og merk av f. eks. Transient om du har en sinus kilde, AC om du har en AC kilde. Hak og av for DCOP for å få DC operating point data. Trykk Setup-knappen ved siden av Transient og sett f. eks. som vist på figuren under. [[File:transient.png|400px]] Dersom du vil kjøre en noise analyse så må du ha en AC kilde og du må hake av for AC og NOISE analyse, i setupen til noise analysen velger du navnet på AC kilden under "Input noise source" og navnet på nettet til utgangen din under "Output noise net". Under "Print frequency point every" skriver du antall ganger på en dekade programmet skal regne ut støyen, dersom du vil finne ut total output/input noise må dette tallet være over 0. Hak så av for de plottene du vil ha. Total output/input noise pluss støyen ved hver dekade fra 1-50Mhz blir skrevet til .chi filen. Plottene er gitt i V/rot(Hz) Nå er det bare å generere nettliste og kjøre simulering. Simulatoren vi bruker heter ELDO. Hvis vi kun vil generere nettliste bruker vi knappen Netlist. Ved å trykke på knappen Run ELDO genereres nettlisten og simulatoren kjøres. ELDO kjøres i bakgrunnen og skriver statusmeldinger til log-vinduet under skjemaet. Sjekk at du ikke får feilmeldinger før du prøver å analysere resultatene. Dersom du satte på DCOP under analyse vil du finne alle nodespenningene og total power consumption for kretsen i loggen.Denne informasjonen kan du og finne igjen i .chi-filen. For å studere resultat-plottene, velg View Waves fra menyen til høyre. Dette starter programmet EZwave, som brukes til å studere simuleringsresultater. For å plotte en eller flere signaler så velger du signalet i treet på venstre side, høyre-klikker og velger plot-stacked for å få de under hverandre eller plot-overlayed for å få de oppå hverandre. Du kan så legge til en cursor ved å tryke på ikonet som ar to bokser med et pluss tegn i mellom, eller ved å bruke F5. Cursoren kan nå flyttes frem og tilbake manuelt, eller du kan høyreklikke og velge "Move To..." og taste inn hvor du vil den skal flyttes. For å gjøre kalkulasjoner på signalet kan du trykk på knappen med tegning av en blyant og to linjaler, eller du kan trykke Ctrl-M. Du velger først signalet du vil måle på ved å trykke på navnet ved siden av grafen for så å trykke på knappen inni measurement tool som er ved siden av den med viskelær. Har du f.eks et sinus signal så kan du måle peak to peak ved å hake av for det, velge "Apply measurement to" "visible X region only" dersom du har zoomet inn, eller "entire waveform" ellers. Er det pulstog eller lignende du simulerer så kan du velge timedomain under measurement øverst og du vil få en oppdatert meny ved siden av som har mange relevante målemetoder. Når du vil gjøre forandringer i skjemaet velger du End Sim, og du er tilbake i &#147;skjema-modus&#148;. Når du igjen skal simulere: Velg Check & Save. Velg Simulation for å gå inn i simuleringsmodus. Velg Run ELDO for å kjøre simulering med samme innstillinger som sist. Du kan endre parametre direkte ved å holde musen over parameteren og trykke shift-F7. Dersom du endrer på noen parametre inne i simuleringsmodus slikat teksten blir rød så kan du fjerne endringen med shift-F6. Treffer du en komponent og den blir fjernet så gjør undo ved å trykke U. ==Eldo og dens filer== Nettlisten består av én eller flere filer. Hovedfilen finnes i katalogen *vpt_s35d4_device* og har navnet *.cir. Denne er en tekstfil som kan leses av mennesker (i f.eks. en tekst-editor). Filen inneholder informasjon om hvor bibliotekene ligger og hvilke plot vi vil ha ut. DA Lager hovedfilen enkel, og bruker denne til å inkludere de andre filene. Det er en god idé å åpne disse filene og studere dem. Spør noen som vet. Hvis vi har en enkel krets kan vi skrive .cir-filen på egenhånd uten å tegne skjema i DA. Simulatoren kan vi selv kjøre fra kommandolinje i et terminalvindu med kommandoen: <pre> eldo filnavn.cir </pre> hvor &#147;filnavn.cir&#148; er kildefilen. ELDO produserer forskjellige output-filer: - .chi-filen er en tekstfil hvor ELDO lister opp alt den har gjort. Her finnes kildekoden, info om feil og advarsler, data for hvordan transistorene oppfører seg (metning/lineært område) hvor lang tid simuleringen tok og mere til. Letteste måten å finne ut hvor .chi filen blir av er å studere message area nederst etter at du har fullført en eldo simulering. Om ikke vinduet er der så trykk på setup knappen på ikonmenyen øverst, den helt til venstre, og hak av for "Show message area" og trykk ok. Etter simuleringen får du opp <pre> Note : Now processing: /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.op1 </pre> I fra shellet kan du åpne .chi filen ved å kopiere pathen fra over, men skifte ut op1 på slutten med chi, feks slik: <pre> less /heim/brukernavn/mgc/mitt_prosjekt.proj/navn_på_library.lib/default.group/logic.views/navn_på_cell/vpt_c35b4_device/navn_på_cell_vpt_c35b4_device.chi </pre> når filen er åpnet kan du trykke shift-g så kommer du til slutten av filen, ruller du tre sider opp sånn ca så er du ved transistor dataen. Du kan og bruke gedit istedet for less, da får du det opp i "notepad". Her står det om transistorene er i metning eller ikke og alle andre parametre, ignorer det negative tegnet på kondensatorene, ro er det samme som 1/GDS. - .attr er en fil med de plottene vi spurte etter. Denne må åpnes i Xelga eller DA IC View. ==Tips== For å gjøre det lettere å bruke programmet kan vi sette noen innstillinger i DA-vinduet. Velg MGC &#150; Setup &#150; Session. Velg f. eks. disse innstillingene: Måten DA bruker for å velge symboler med kan virke litt rar. Det kan du stille på ved å velge Session i menyen til høyre (ikke ha schematic-vinduet aktivt). Fra rullegardinmenyene velg: Setup &#150; Selection. Bytt gjerne fra Additive til Individual. Dersom du ikke har et grått meldingsvindu nederst, er det en fordel å hake av for dette inni setup. Vinduet gir meldinger som ikke dukker opp i library vinduet. For at DA skal huske disse innstillingene til neste gang velger du fra rullegardinmenyene: Setup - Save Setup. Hvis du får en feilmelding (nederst på skjermen) som sier &#147;katalogen /mgc/startup finnes ikke&#148;, så er det bare å opprette en slik katalog og prøve igjen. = Tutorial for konstruksjon av inverter og symbol = Tutorialet forutsetter at du har gjort det som står under [[IC_studio#Starte_opp_IC_studio]] og fått startet programmet. 1. Om du ikke allerede har et library så kan du høyre-klikke i Library ruten og velge "New Library". Kall bibloteket noe fornuftig. 2. Høyre-klikk i Cell vinduet og velg "New Cell View". Kall cellen for inverter, velg schematic under "View Type". Trykk Finish og Design Architect vil åpne seg. 3. Om det ikke er en meny på høyre side så trykker du på "Toggle lib" knappen på venstre meny, nest nederst. 4. Trykk på "HIT-Kit Utilities" på den høyre menyen. 5. Legg til nmos transistoren som under ved å gå til "Devices->MOS->nmos4", når vinduet kommer opp trenger du ikke endre noe siden n-transistoren skal ha unity size. W er satt til 0.4, men har en effektiv lengde på 0.35 i produksjonen. 6. Legg til nmos transistoren som under ved å gå til "Devices->MOS->pmos4", når vinduet kommer opp trykker du på "Change WTOT" og fyller inn 1. I følge databladet har Kp en gjennomsnittsverdi på 170uA/v og Kn har 58uA/V. Så det må være en faktor på 3 mellom n og p transistorene. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til port inn og port ut. De ligger under "etc->portin" og "etc->portout". 9. Legg til kabler som vist under. Du starter kablingen ved å trykke W, klikk en gang for å begynne en kabel, en gang til et annet sted for å henge den fast der og to ganger et sted for å stoppe kabelen. Du slutter kabel trekkingsverktøyet med ESC. 10. Skift navn på nettet til portene ved å først trykke på kabelen fremfor porten slik at den blir hvit for så å trykke på "Net name" knappen på menyen til venstre. Kall innporten for A og utporten for Q. 11. Trykk på "File->Check schematic" om det er listet noen errors så fiks disse, warnings er vanligvis ikke så nøye. [[File:inverter.jpg|400px]] 12. Trykk på "Miscellaneous->Generate symbol". I vinduet som dukker opp trykker du på "Choose shape" og velger "Buffer". Trykk OKx2 og du får opp symbolet til kretsen din. 13. Trykk på kabelen under "out" merket og trykk delete. 14. Trykk på Circle knappen på høyre side og lag en sirkel foran spissen på bufferet. 15. Trykk på Polyline knappen på høyre side og trekk en strek fra pinnen til sirkelen som vist under. 16. Trykk på "Setup->Select filter" på fil menyen. Hak av for allt og trykk ok. 17. Trykk så på "hide labels" på venstre side. [[File:symbol.jpg|200px]] 13. Trykk "Check & Save" på venstre side og gå tilbake til library vinduet. Har du lagt symbolet inn i et nytt skjema, men har sener oppdatert eller endret noe i symbolet eller den bakomliggende kretsen så må du høyreklikke på symbolet i skjemaet og velge "Update". [[Category:Mikroelektronikk]] 0c7157bff924bc96b96ce8b32b74c491c77deff5 Busy Box and related 0 3 1800 1627 2012-04-23T11:43:03Z Nfyku 4 Added version 58 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 8910110335cdd7bcb78ab80e0884ff18357e2abe Busy Box and related/BusyBox Registers 0 242 1801 1610 2012-04-23T13:20:43Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L1 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L1A trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L1 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[0] |Serial B channel on/off Default: 1 |---- |RW |[1] |Disable_error_masking 0 |---- |RW |[2] |NA 0 |---- |RW |[3] |L0 support 1 |---- |RW |[4:7] |Not Used |---- |RW |[8] |L2a FIFO storage mask 1 |---- |RW |[9] |L2r FIFO storage mask 1 |---- |RW |[10] |L2 Timeout FIFO storage mask 1 |---- |RW |[11] |L1a message mask 1 |---- |RW |[12] |Trigger Input Mask Enable 0 |---- |RW |[13:15] |Not Used |---- |RW |[16] |Bunch_counter overflow |---- |RW |[17] |Run Active - |---- |RW |[18] |Busy (receiving sequence) - |---- |RW |[19] |Not Used |---- |RW |[23:20] |CDH version 0x2 |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3014 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3015 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3050 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3052 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3053 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 9d21686a78364ef506e5242f52b6278e0ac3c72d 1802 1801 2012-04-24T06:44:06Z Nfyku 4 Updated Trigger Modules Regesiter definition wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L1 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L1A trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L1 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Type !Description |---- | <nowiki>Control[23:0]</nowiki> | 0x3000 | RW | <nowiki>[0] Serial B channel on/off </nowiki> ''Default: ''1'' <nowiki>[1] </nowiki> Disable_error_masking ''0'' <nowiki>[2] NA</nowiki> ''0'' <nowiki>[3] L0 support </nowiki> ''1'' <nowiki>[4:7] </nowiki> ''(Not Used)'' <nowiki>[8] L2a FIFO storage mask</nowiki> ''1'' <nowiki>[9] L2r FIFO storage mask</nowiki> ''1'' <nowiki>[10] L2 Timeout FIFO storage mask</nowiki> ''1'' <nowiki>[11] L1a message mask </nowiki> ''1'' <nowiki>[12]</nowiki> '' ''Trigger Input Mask Enable ''0'' <nowiki>[13:15] </nowiki> ''(Not Used)'' <nowiki>[16] </nowiki> Bunch_counter overflow - <nowiki>[17] Run Active </nowiki> - <nowiki>[18] Busy (receiving sequence)</nowiki> - <nowiki>[19] </nowiki> ''Not Used'' <nowiki>[23:20] CDH version </nowiki> 0x2 |- | Module Reset | 0x3001 | T | Reset Module |- | NA | 0x3002 | | |- | NA | 0x3003 | | |- | Reset Counters | 0x3004 | T | Write to this registers will reset the counters in the module |- | Issue Testmode | 0x3005 | T | Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |- | <nowiki>L1_Latency[15:0]</nowiki> | 0x3006 | RW | <nowiki>[15:12] Uncertainty region +- N. default value 0x2 (50 ns)</nowiki> <nowiki>[11:0] Latency from L0 to L1, default value 0x0D4 (5.3 us) </nowiki> |- | <nowiki>L2_Latency[31:0]</nowiki> | 0x3007 | RW | <nowiki>[15:0] Max Latency from BC0 to L2, default value 0x4E20 (500 us)</nowiki> <nowiki>[31:16] Min Latency from BC0 to L2, default value 0x0C80 (80 us)</nowiki> |- | L2_Extdended <nowiki>Latency[31:0]</nowiki> | 0x3009 | RW | <nowiki>[15:0] Max Latency from BC0 to L2 Extended window end, default value 0x4E48 (501 us)</nowiki> <nowiki>[31:16] Min Latency from BC0 to L2 Extended window start, default value 0x0C80 (80 us)</nowiki> |- | <nowiki>L1_msg_latency[31:0]</nowiki> | 0x300A | RW | <nowiki>[15:0] Max Latency from BC0 to L1 </nowiki> msg, default value 0x0028 (1 us) <nowiki>[31:16] Min Latency from BC0 to L1 </nowiki> msg, default value 0x0F8 (6,2 us) |- | Pre_pulse_counter <nowiki>[15:0]</nowiki> | 0x300B | R | Number of decoded pre-pulses. |- | BCID_Local <nowiki>[11:0]</nowiki> | 0x300C | R | Number of bunchcrossings at arrival of L1 trigger. |- | <nowiki>L0_counter[15:0]</nowiki> | 0x300D | R | Number of L0 triggers |- | <nowiki>L1_counter[15:0]</nowiki> | 0x300E | R | Number of L1 triggers |- | <nowiki>L1_msg_counter[15:0]</nowiki> | 0x300F | R | Number of successfully decoded L1 messages |- | <nowiki>L2a_counter[15:0]</nowiki> | 0x3010 | R | Number of successfully decoded L2a messages |- | <nowiki>L2r_counter[15:0]</nowiki> | 0x3011 | R | Number of successfully decoded L2r messages |- | NA | 0x3012 | | |- | Bunchcounter <nowiki>[11:0]</nowiki> | 0x3013 | R | Debug: Number of bunchcrossings |- | hammingErrorCnt <nowiki>[31:0]</nowiki> | 0x3016 | R | <nowiki>[15:0] Number of single bit hamming errors [31:16] Number of double bit hamming errors</nowiki> |- | ErrorCnt <nowiki>[31:0]</nowiki> | 0x3017 | R | <nowiki>[15:0] Number of message decoding errors </nowiki> <nowiki>[31:16] Number of errors related to sequence and timeouts.</nowiki> |- | Buffered_events <nowiki>[4:0]</nowiki> | 0x3020 | R | Number of events stored in the FIFO. |- | <nowiki>DAQ_Header01[31:0]</nowiki> | 0x3021 | R | Latest received DAQ Header 1 |- | <nowiki>DAQ_Header02[31:0]</nowiki> | 0x3022 | R | Latest received DAQ Header 2 |- | <nowiki>DAQ_Header03[31:0]</nowiki> | 0x3023 | R | Latest received DAQ Header 3 |- | <nowiki>DAQ_Header04[31:0]</nowiki> | 0x3024 | R | Latest received DAQ Header 4 |- | <nowiki>DAQ_Header05[31:0]</nowiki> | 0x3025 | R | Latest received DAQ Header 5 |- | <nowiki>DAQ_Header06[31:0]</nowiki> | 0x3026 | R | Latest received DAQ Header 6 |- | <nowiki>DAQ_Header07[31:0]</nowiki> | 0x3027 | R | Latest received DAQ Header 7 |- | Event_info <nowiki>[17:0]</nowiki> | 0x3028 | R | Latest Received Event information: <nowiki>[0] ‘0’</nowiki> <nowiki>[1] Region of Interest announced (=ESR)</nowiki> <nowiki>[2] ‘0’</nowiki> <nowiki>[3] ‘0’</nowiki> <nowiki>[4:7] Calibration/SW trigger type (= </nowiki> RoC) <nowiki>[8] Software trigger event</nowiki> <nowiki>[9] Calibration trigger event</nowiki> <nowiki>[10] Event has L2 Reject trigger</nowiki> <nowiki>[11] Event has L2 Accept trigger</nowiki> <nowiki>[12] Include payload</nowiki> <nowiki>[17:13] SCLK phase when (L0/L1)trigger arrives</nowiki> |- | Event_error <nowiki>[24:0]</nowiki> | 0x3029 | R | Latest Received Event error conditions: <nowiki>[0] Serial B Stop Bit Error</nowiki> <nowiki>[1] Single Bit Hamming Error Individually </nowiki> Addr. <nowiki>[2] Double Bit Hamming Error Individually </nowiki> Addr. <nowiki>[3] Single Bit Hamming Error Broadcast.</nowiki> <nowiki>[4] Double Bit Hamming Error Broadcast.</nowiki> <nowiki>[5] Unknown Message Address Received</nowiki> <nowiki>[6] Incomplete L1 Message</nowiki> <nowiki>[7] Incomplete L2a Message</nowiki> <nowiki>[8] NA </nowiki> <nowiki>[9] </nowiki> TTCrx Address Error (not X”0003”) <nowiki>[10] Spurious L0 </nowiki> <nowiki>[11] Missing </nowiki> L0 <nowiki>[12] Spurious L1</nowiki> <nowiki>[13] Boundary L1</nowiki> <nowiki>[14] Missing L1</nowiki> <nowiki>[15] L1 message arrives outside legal timeslot</nowiki> <nowiki>[16] L1 message missing/timeout</nowiki> <nowiki>[17] L2 message arrives outside legal timeslot</nowiki> <nowiki>[18] L2 message missing/timeout</nowiki> <nowiki>[19] Boundary L2 Message</nowiki> <nowiki>[20] NA</nowiki> <nowiki>[21] </nowiki> Prepulse error (=0; possible future use) <nowiki>[22] L1 message content error</nowiki> <nowiki>[23] L2 message content error</nowiki> <nowiki>[24] NA</nowiki> |- | <nowiki>L1_MessageHeader[11:0]</nowiki> | 0x3030 | R | Debug: Latest received L1 Message |- | <nowiki>L1_MessageData1[11:0]</nowiki> | 0x3031 | R | Debug: Latest received L1 Message |- | <nowiki>L1_MessageData2[11:0]</nowiki> | 0x3032 | R | Debug: Latest received L1 Message |- | <nowiki>L1_MessageData3[11:0]</nowiki> | 0x3033 | R | Debug: Latest received L1 Message |- | <nowiki>L1_MessageData4[11:0]</nowiki> | 0x3034 | R | Debug: Latest received L1 Message |- | <nowiki>L2aMessageHeader[11:0]</nowiki> | 0x3035 | R | Debug: Latest received L2a Message |- | <nowiki>L2aMessageData1[11:0]</nowiki> | 0x3036 | R | Debug: Latest received L2a Message |- | <nowiki>L2aMessageData2[11:0]</nowiki> | 0x3037 | R | Debug: Latest received L2a Message |- | <nowiki>L2aMessageData3[11:0]</nowiki> | 0x3038 | R | Debug: Latest received L2a Message |- | <nowiki>L2aMessageData4[11:0]</nowiki> | 0x3039 | R | Debug: Latest received L2a Message |- | <nowiki>L2aMessageData5[11:0]</nowiki> | 0x303A | R | Debug: Latest received L2a Message |- | <nowiki>L2aMessageData6[11:0]</nowiki> | 0x303B | R | Debug: Latest received L2a Message |- | <nowiki>L2aMessageData7[11:0]</nowiki> | 0x303C | R | Debug: Latest received L2a Message |- | <nowiki>L2rMessageHeader[11:0]</nowiki> | 0x303D | R | Debug: Latest received L2r Message |- | RoIMessageHeader <nowiki>[11:0]</nowiki> | 0x303E | R | Debug: Latest received RoI Message |- | <nowiki>RoIMessageData1[11:0]</nowiki> | 0x303F | R | Debug: Latest received RoI Message |- | <nowiki>RoIMessageData2[11:0]</nowiki> | 0x3040 | R | Debug: Latest received RoI Message |- | <nowiki>RoIMessageData3[11:0]</nowiki> | 0x3041 | R | Debug: Latest received RoI Message |- | FIFO_read_enable | 0x3080 | T | Debug: Triggers a readout pulse to FIFO |- | FIFO_DAQHeader <nowiki>[31:0]</nowiki> | 0x3081 | R | Debug: Output of FIFO |} 6ad9b90ce83799f27ecc8527261548ab74d02826 1803 1802 2012-04-24T07:15:18Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L1 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L1A trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L1 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Type !Description |---- | Control[23:0] | 0x3000 | RW | * [0] Serial B channel on/off ''Default: ''1'' * [1] Disable_error_masking ''0'' * [2] NA ''0'' * [3] L0 support ''1'' * [4:7] ''(Not Used)'' * [8] L2a FIFO storage mask ''1'' * [9] L2r FIFO storage mask ''1'' * [10] L2 Timeout FIFO storage mask ''1'' * [11] L1a message mask ''1'' * [12] '' ''Trigger Input Mask Enable ''0'' * [13:15] ''(Not Used)'' * [16] Bunch_counter overflow - * [17] Run Active - * [18] Busy (receiving sequence) - * [19] ''Not Used'' * [23:20] CDH version 0x2 |- | Module Reset | 0x3001 | T | Reset Module |- | NA | 0x3002 | | |- | NA | 0x3003 | | |- | Reset Counters | 0x3004 | T | Write to this registers will reset the counters in the module |- | Issue Testmode | 0x3005 | T | Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |- | L1_Latency[15:0] | 0x3006 | RW | * [15:12] Uncertainty region +- N. default value 0x2 (50 ns) * [11:0] Latency from L0 to L1, default value 0x0D4 (5.3 us) |- | L2_Latency[31:0] | 0x3007 | RW | * [15:0] Max Latency from BC0 to L2, default value 0x4E20 (500 us) * [31:16] Min Latency from BC0 to L2, default value 0x0C80 (80 us) |- | L2_Extdended Latency[31:0] | 0x3009 | RW | * [15:0] Max Latency from BC0 to L2 Extended window end, default value 0x4E48 (501 us) * [31:16] Min Latency from BC0 to L2 Extended window start, default value 0x0C80 (80 us) |- | L1_msg_latency[31:0] | 0x300A | RW | * [15:0] Max Latency from BC0 to L1 msg, default value 0x0028 (1 us) * [31:16] Min Latency from BC0 to L1 msg, default value 0x0F8 (6,2 us) |- | Pre_pulse_counter[15:0] | 0x300B | R | Number of decoded pre-pulses. |- | BCID_Local[11:0] | 0x300C | R | Number of bunchcrossings at arrival of L1 trigger. |- | L0_counter[15:0] | 0x300D | R | Number of L0 triggers |- | L1_counter[15:0] | 0x300E | R | Number of L1 triggers |- | L1_msg_counter[15:0] | 0x300F | R | Number of successfully decoded L1 messages |- | L2a_counter[15:0] | 0x3010 | R | Number of successfully decoded L2a messages |- | L2r_counter[15:0] | 0x3011 | R | Number of successfully decoded L2r messages |- | NA | 0x3012 | | |- | Bunchcounter[11:0] | 0x3013 | R | Debug: Number of bunchcrossings |- | hammingErrorCnt[31:0] | 0x3016 | R | [15:0] Number of single bit hamming errors [31:16] Number of double bit hamming errors |- | ErrorCnt[31:0] | 0x3017 | R | * [15:0] Number of message decoding errors * [31:16] Number of errors related to sequence and timeouts. |- | Buffered_events[4:0] | 0x3020 | R | Number of events stored in the FIFO. |- | DAQ_Header01[31:0] | 0x3021 | R | Latest received DAQ Header 1 |- | DAQ_Header02[31:0] | 0x3022 | R | Latest received DAQ Header 2 |- | DAQ_Header03[31:0] | 0x3023 | R | Latest received DAQ Header 3 |- | DAQ_Header04[31:0] | 0x3024 | R | Latest received DAQ Header 4 |- | DAQ_Header05[31:0] | 0x3025 | R | Latest received DAQ Header 5 |- | DAQ_Header06[31:0] | 0x3026 | R | Latest received DAQ Header 6 |- | DAQ_Header07[31:0] | 0x3027 | R | Latest received DAQ Header 7 |- | Event_info[17:0] | 0x3028 | R | Latest Received Event information: * [0] ‘0’ * [1] Region of Interest announced (=ESR) * [2] ‘0’ * [3] ‘0’ * [4:7] Calibration/SW trigger type (= RoC) * [8] Software trigger event * [9] Calibration trigger event * [10] Event has L2 Reject trigger * [11] Event has L2 Accept trigger * [12] Include payload * [17:13] SCLK phase when (L0/L1)trigger arrives |- | Event_error[24:0] | 0x3029 | R | Latest Received Event error conditions: * [0] Serial B Stop Bit Error * [1] Single Bit Hamming Error Individually Addr. * [2] Double Bit Hamming Error Individually Addr. * [3] Single Bit Hamming Error Broadcast. * [4] Double Bit Hamming Error Broadcast. * [5] Unknown Message Address Received * [6] Incomplete L1 Message * [7] Incomplete L2a Message * [8] NA * [9] TTCrx Address Error (not X”0003”) * [10] Spurious L0 * [11] Missing L0 * [12] Spurious L1 * [13] Boundary L1 * [14] Missing L1 * [15] L1 message arrives outside legal timeslot * [16] L1 message missing/timeout * [17] L2 message arrives outside legal timeslot * [18] L2 message missing/timeout * [19] Boundary L2 Message * [20] NA * [21] Prepulse error (=0; possible future use) * [22] L1 message content error * [23] L2 message content error * [24] NA |- | L1_MessageHeader[11:0] | 0x3030 | R | Debug: Latest received L1 Message |- | L1_MessageData1[11:0] | 0x3031 | R | Debug: Latest received L1 Message |- | L1_MessageData2[11:0] | 0x3032 | R | Debug: Latest received L1 Message |- | L1_MessageData3[11:0] | 0x3033 | R | Debug: Latest received L1 Message |- | L1_MessageData4[11:0] | 0x3034 | R | Debug: Latest received L1 Message |- | L2aMessageHeader[11:0] | 0x3035 | R | Debug: Latest received L2a Message |- | L2aMessageData1[11:0] | 0x3036 | R | Debug: Latest received L2a Message |- | L2aMessageData2[11:0] | 0x3037 | R | Debug: Latest received L2a Message |- | L2aMessageData3[11:0] | 0x3038 | R | Debug: Latest received L2a Message |- | L2aMessageData4[11:0] | 0x3039 | R | Debug: Latest received L2a Message |- | L2aMessageData5[11:0] | 0x303A | R | Debug: Latest received L2a Message |- | L2aMessageData6[11:0] | 0x303B | R | Debug: Latest received L2a Message |- | L2aMessageData7[11:0] | 0x303C | R | Debug: Latest received L2a Message |- | L2rMessageHeader[11:0] | 0x303D | R | Debug: Latest received L2r Message |- | RoIMessageHeader[11:0] | 0x303E | R | Debug: Latest received RoI Message |- | RoIMessageData1[11:0] | 0x303F | R | Debug: Latest received RoI Message |- | RoIMessageData2[11:0] | 0x3040 | R | Debug: Latest received RoI Message |- | RoIMessageData3[11:0] | 0x3041 | R | Debug: Latest received RoI Message |- | FIFO_read_enable | 0x3080 | T | Debug: Triggers a readout pulse to FIFO |- | FIFO_DAQHeader[31:0] | 0x3081 | R | Debug: Output of FIFO |} 5f573739a63256fd4d556c925e7601ec82a06125 1804 1803 2012-04-24T07:37:45Z Nfyku 4 wikitext text/x-wiki {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Busy Box Status and Control Registers |- !width="170"|Name !Address !Mode !Description !Default Value |- |TX module(15:0) |0x0001 |RW |For sending messages to DRORCs. * Bit 7:0 is TX data. * Bit 15:8 gives channelnumber in hexadecimal. Any value greater than the actual number of channels will result in a broadcast on all channels. |0x0000 |- |RX memory |0x1000-0x1FFF |RW |Memory where all messages received from DRORCs will be stored. One message is stored over 4 addresses: * Address ending "00" - 0x0 & RequestID(3:0) & OrbitID(23:16) * Address ending "01" - OrbitID(15:0) * Address ending "10" - 0x0 BunchCountID(11:0) * Address ending "11" - DRORCID(7:0) & ChannelNumber(7:0) |0x0000 |- |RX memory pointer(13:0) |0x2000 |R |Holds the value where the next message will be written in RX memory. The RX memory pointer will increase by 4 for each message. |0x0000 |- |EventID FIFO count(3:0) |0x2001 |R |Number of eventIDs stored in the FIFO, excluding the eventID currently being matched, if any. |0x0000 |- |Current EventID(35:32) |0x2002 |R |rowspan="3"|The EventID which is currently being matched. |0x0000 |- |Current EventID(31:16) |0x2003 |R |0x0000 |- |Current EventID(15:0) |0x2004 |R |0x0000 |- |Newest EventID(35:32) |0x2005 |R |rowspan="3"|The EventID most recently received from the Trigger system. |0x0000 |- |Newest EventID(31:16) |0x2006 |R |0x0000 |- |Newest EventID(15:0) |0x2007 |R |0x0000 |- |L1 Trigger Timeout(15:0) |0x2008 |RW |Time in 10 us resolution the 'busy' will be asserted after an L1A trigger. Note: The busy will not be deasserted if the buffers are full. |0x000A |- |Busy Condition(15:0) |0x2009 |RW |Status and control registers concerning the BUSY generation * Bit 15 - Busy because TTCrx_ready is low. * Bit 14 - Busy because MEB count >= MEB limit * Bit 13 - Busy because L1 timeout is active. * Bit 12 - Busy because Trigger Receiver Module is busy receiving a sequence. * Bit 11 - Busy because the maximum Trigger Burst length has been exceeded. * Bit 10 - Busy because two buffers are, or have been used, in new sparse mode * Bit 9:8 - Unused * Bit 7:4 - Current MEB count. * Bit 3:0 - MEB Limit: Limit for the maximum number of MEBs to count before busy will be asserted. |0x0000 |- |Halt FSM matching(0) |0x200A |RW |If LSB is set to 1 the internal State Machine (FSM) will halt in a wait state and will stop requesting EventIDs from the DRORCs. |0x0001 |- |Force match(0) |0x200B |T |Writing 0x1 when FSM halt is set, will force the FSM to move on to the next EventID even if it is not matched. Note : FSM must be halted before this has any effect. |N/A |- |Re-Request Timeout(15:0) |0x200C |RW |Number of clock cycles (25 ns) to wait in between sending requests to the DRORCs. |0x07FF |- |Current RequestID(3:0) |0x200D |R |Holds the RequestID the BusyBox is using to request eventIDs from the DRORCs. |0x0000 |- |Retry Count(15:0) |0x200E |R |Number of times the FSM has sent requests to DRORCs. Will reset to 0 for start of every eventID. |0x0000 |- |Busy time(31:16) |0x2010 |R |rowspan="2"|Holds value of counter for number of clock cycles BUSY has been asserted. |0x0000 |- |Busy time(15:0) |0x2011 |R |0x0000 |- |RX mem filter(15:0) |0x2012 |RW |Allows filtering of messages that are stored in RX memory. *Bit 7:0 is the pattern that will be matched with the channelnumber of the message. *Bit 15:8 allows enableing matching of individual bits 7-0. |0x0000 |- |Number of Channels |0x2014 |R |Number of channels (in hexadecimal) the firmware includes. This is a generic set at compile-time. |N/A |- |Firmware Revision |0x2015 |R |Firmware revision in hexadecimal. Holds the revision number of the source in SVN that this FW was compiled from. Current : 54 |0x0036 |- |Stresstest Enable(0) |0x2016 |RW |Duplicates input on channel 0 to all other channels. Used for testing the device with all channels enabled when only one physical DRORC is available. |0x0000 |- |Burst Size(5:0) |0x2017 |RW |The maximum burst size. A value of 0 disables the Burst Interlock feature. Maximum value is 63. |0x0000 |- |Burst Interlock Leak Time(15:0) |0x2018 |RW |Leak time for the Burst Interlock "leaky bucket" defined in steps of 10 us. Maximum leak time is 655.4 ms. |0x0000 |- |Trigger Mode(2:0) |0x2019 |RW |Control registers concerning the BUSY/trigger mode * Bit 2 - Not used * Bit 1 - New sparse mode enabled * Bit 0 - Not used |0x0000 |- |Current Trigger Event Info(12:0) |0x2050 |R |Holds the Event Info for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(24:16) |0x2051 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Current Trigger Event Error(15:0) |0x2052 |R |Holds the Event Error for current eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Info(12:0) |0x2054 |R |Holds the Event Info for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(24:16) |0x2055 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Newest Trigger Event Error(15:0) |0x2056 |R |Holds the Event Error for newest eventID as reported by the TRM. See TRM registers for bitmapping. |0x0000 |- |Channel Registers |0x21XX |RW |'XX' in the address gives the channelnumber in hexadecimal. *Bit 0 is enable(1)/disable(0) *Bit 1 indicates that the current EventID has been matched on this channel. |0x0001 |- |} {|border="1" cellpadding="5" cellspacing="0" !colspan="5"| Trigger Receiver Module Status and Control Registers |- !width="170"|Name !Address !Mode !width="90"|Bit slice !Description |---- |rowspan="11"|Control |rowspan="11"|0x3000 |RW |[15:13] |Unused |---- |RW |[12] |Trigger Input Mask Enable. Default=0 |---- |RW |[11] |L1a message mask. Default=1 |---- |RW |[10] |L2 Timeout FIFO storage mask. Default=1 |---- |RW |[9] |L2r FIFO storage mask. Default=1 |---- |RW |[8] |L2a FIFO storage mask. Default=1 |---- |RW |[7:4] |Unused |---- |RW |[3] |L0 support. Default=1 |---- |RW |[2] |Unused |---- |RW |[1] |Disable_error_masking. Default=0 |---- |RW |[0] |Serial B channel on/off. Default=1 |---- |rowspan="6"|Control |rowspan="6"|0x3001 |R |[15:8] |Trigger Receiver Version. Default=0x16 |---- |R |[7:4] |CDH version. Default=0x2 |---- |R |[3] |Not used |---- |R |[2] |Busy (receiving sequence) - |---- |R |[1] |Run Active - |---- |R |[0] |Bunch_counter overflow - |---- |Module Reset |0x3002 |T |N/A |Reset Module |---- |Reset Counters |0x3008 |T |N/A |Write to this registers will reset the counters in the module |---- |Issue Testmode |0x300A |T |N/A |Debug: Issues testmode sequence. Note that serialB channel input MUST be disabled when using this feature. |---- |rowspan="2"|L1_Latency |rowspan="2"|0x300C |RW |[15:12] |Uncertainty region +- N. default value 0x2 (50 ns) |---- |RW |[11:0] |Latency from L0 to L1. default value 0x0D4 (5.3 us) |---- |L2_Latency MAX |0x300E |RW |[15:0] |Max Latency from BC0 to L2. default value 0x4E20 (500 us) |---- |L2_Latency MIN |0x300F |RW |[15:0] |Min Latency from BC0 to L2. default value 0x0C80 (80 us) |---- |L1_msg_latency MAX |0x3014 |RW |[15:0] |Max Latency from BC0 to L1 msg. default value 0x0028 (1 us) |---- |L1_msg_latency MIN |0x3015 |RW |[15:0] |Min Latency from BC0 to L1 msg. default value 0x0F8 (6.2 us) |---- |Pre_pulse_counter |0x3016 |R |[15:0] |Number of decoded pre-pulses. |---- |BCID_Local |0x3018 |R |[11:0] |Number of bunchcrossings at arrival of L1 trigger. |---- |L0_counter |0x301A |R |[15:0] |Number of L0 triggers |---- |L1_counter |0x301C |R |[15:0] |Number of L1 triggers |---- |L1_msg_counter |0x301E |R |[15:0] |Number of successfully decoded L1 messages |---- |L2a_counter |0x3020 |R |[15:0] |Number of successfully decoded L2a messages |---- |L2r_counter |0x3022 |R |[15:0] |Number of successfully decoded L2r messages |---- |Bunchcounter |0x3026 |R |[11:0] |Debug: Number of bunchcrossings |---- |SingleHammingErrorCnt |0x302C |R |[15:0] |Number of single bit hamming errors |---- |DoubleHammingErrorCnt |0x302D |R |[15:0] |Number of double bit hamming errors |---- |MsgDecodingErrorCnt |0x302E |R |[15:0] |Number of message decoding errors |---- |SeqTimoutErrorCnt |0x302F |R |[15:0] |Number of errors related to sequence and timeouts. |---- |Buffered_events |0x3040 |R |[4:0] |Number of events stored in the FIFO. |---- |DAQ_Header01 |0x3042 |R |[15:0] |Latest received DAQ Header 1 [15:0] |---- |DAQ_Header01 |0x3043 |R |[15:0] |Latest received DAQ Header 1 [31:16] |---- |DAQ_Header02 |0x3044 |R |[15:0] |Latest received DAQ Header 2 [15:0] |---- |DAQ_Header02 |0x3045 |R |[15:0] |Latest received DAQ Header 2 [31:16] |---- |DAQ_Header03 |0x3046 |R |[15:0] |Latest received DAQ Header 3 [15:0] |---- |DAQ_Header03 |0x3047 |R |[15:0] |Latest received DAQ Header 3 [31:16] |---- |DAQ_Header04 |0x3048 |R |[15:0] |Latest received DAQ Header 4 [15:0] |---- |DAQ_Header04 |0x3049 |R |[15:0] |Latest received DAQ Header 4 [31:16] |---- |DAQ_Header05 |0x304a |R |[15:0] |Latest received DAQ Header 5 [15:0] |---- |DAQ_Header05 |0x304b |R |[15:0] |Latest received DAQ Header 5 [31:16] |---- |DAQ_Header06 |0x304c |R |[15:0] |Latest received DAQ Header 6 [15:0] |---- |DAQ_Header06 |0x304d |R |[15:0] |Latest received DAQ Header 6 [31:16] |---- |DAQ_Header07 |0x304e |R |[15:0] |Latest received DAQ Header 7 [15:0] |---- |DAQ_Header07 |0x304f |R |[15:0] |Latest received DAQ Header 7 [31:16] |---- |Event_info |0x3050 |R |[12:0] |Latest Received Event information: |---- |colspan="2" rowspan="10"| |R |[12] |Include payload |---- |R |[11] |Event has L2 Accept trigger |---- |R |[10] |Event has L2 Reject trigger |---- |R |[9] |Calibration trigger event |---- |R |[8] |Software trigger event |---- |R |[4:7] |Calibration/SW trigger type (= RoC) |---- |R |[3] |NA(=‘0’) |---- |R |[2] |NA(=‘0’) |---- |R |[1] |Region of Interest announced (=ESR) |---- |R |[0] |NA(=’0’) |---- |Event_error |0x3052 |R |[15:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="16"| |R |[15] |L1 message arrives outside legal timeslot |---- |R |[14] |Missing L1 |---- |R |[13] |Boundary L1 |---- |R |[12] |Spurious L1 |---- |R |[11] |Missing L0 |---- |R |[10] |Spurious L0 |---- |R |[9] |TTCrx Address Error (not X”0003”) |---- |R |[8] |NA (= ‘0’) |---- |R |[7] |Incomplete L2a Message |---- |R |[6] |Incomplete L1 Message |---- |R |[5] |Unknown Message Address Received |---- |R |[4] |Double Bit Hamming Error Broadcast. |---- |R |[3] |Single Bit Hamming Error Broadcast. |---- |R |[2] |Double Bit Hamming Error Individually Addr. |---- |R |[1] |Single Bit Hamming Error Individually Addr. |---- |R |[0] |Serial B Stop Bit Error |---- |Event_error |0x3053 |R |[8:0] |Latest Received Event error conditions: |---- |colspan="2" rowspan="9"| |R |[8] |NA (= ‘0’) |---- |R |[7] |L2 message content error |---- |R |[6] |L1 message content error |---- |R |[5] |Prepulse error (=0; possible future use) |---- |R |[4] |NA (= ‘0’) |---- |R |[3] |NA (= ‘0’) |---- |R |[2] |L2 message missing/timeout |---- |R |[1] |L2 message arrives outside legal timeslot |---- |R |[0] |L1 message missing/timeout |---- |} 88d24a05c8039389de174bcca9fff04dc39e054f Microelectronics group 0 25 1805 1712 2012-06-28T09:25:36Z Vho026 70 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) [[Category:Mikroelektronikk]] 392b221e98511ef27bd3b91dd77f8e2e86ebd4e9 XJDeveloper 0 410 1806 2012-06-28T09:38:56Z Vho026 70 Created page with '== XJDeveloper == Dette er ei innføring i XJDeveloper. Tilhøyrande dokumentasjon er meint brukt til XJDemo Board versjon 1.2. === Dokumentasjonsmappa === Dokumentasjonsmpappa…' wikitext text/x-wiki == XJDeveloper == Dette er ei innføring i XJDeveloper. Tilhøyrande dokumentasjon er meint brukt til XJDemo Board versjon 1.2. === Dokumentasjonsmappa === Dokumentasjonsmpappa inneheld: * Krinsskjema * Bilete av demokort v.1.2. * Demokort-netliste * Diverse test-filer * Device-filer === Sette opp kortet === Det fyrste som gjerast er å kople demokortet til datamaskina gjennom XJ Link. Bruk ein av USB-inngongane på baksida av maskina. Deretter må det lagast ei prosjektmappe, som skal innehalde alle filene som vert laga. Mappe-plasseringa speler inga rolle. For å starte XJDeveloper: start>Programs>XJTAG 2.4>XJDeveloper. Lag eit nytt prosjekt, og lagre det i prosjektmappa. Gje prosjektet namnet "demo". Når dette er gjort, dukker dialogboksen "Add board" automatisk opp. I denne boksen gjev du kortet namn, og du gjev XJDeveloper netlista til demokortet. Gje kortet namnet "XJDemo". Netlista finn du i dokumentasjonsmappa - demo.net I tillegg har vi ei BOM-fil, som gjev XJDeveloper tilleggsinformasjon om komponentane på kortet. Denne fila er ikkje strengt naudsynt, men er nyttig. I dokumentasjonen finn du BOM-fila - demo.bom Legg til BOM-fila under BOM-settings. Etter å ha trykka next, set du tredje kolonne til å vere "Device Reference", fjerne kolonne "Value", og siste kolonne til "Device Description". Save. Under Power/Ground Nets i Setup-menyen i venstre marg er det to nett, 3.3V og GND. Dra desse to neta over i riktig kolonne til høgre. No veit XJTAG kva nett som er power og jord, og vil ikkje forsøke å skrive til desse. ==== Identifisere komponentane ==== Neste steg er å identifisere JTAG-kjeden. Trykk på add i Chain Setup. Til høgre for TDI, trykker du på select og vel CN1, pin 5. Trykk OK. Så kjem IC2.B3 opp i Select Next Pin-vinduet. Dra denne ned i JTAG Devices-lista. Trykk på Browse, og velg fila med same namn som IC2, altså XC9536XL_cs48.bsd Gjer det same med IC3.1, 3032at44.bsd. Begge desse filene finst i dokumentasjonsmappa. Neste steget er ein resistor, R49. Dra denne ned i JTAG-Devices-lista, men velg Connect device i den øvste fana. Så vel du Create file. Namngje fila Resistor, og connect 1 til 2. Til slutt kjem IC1.13. Høgreklikk og set denne til TDO. Save. No har vi etablert JTAG-kjeden. Deretter skal vi kategorisere non-JTAG-devices. Under Categorise Devices-fana i venstremargen, finn vi alle komponentane(devices), og ingen er endå kategoriserte. * Risistorane som er markerte med "Suggested Series Resistors" kategoriserer vi som passive komponentar. Dra alle over i "Passive", og velg Resistor.pdd som allereie er laga. * Alle jumperane på krinsen lar vi og vere passive. Gje jumperane[1,2,3,5,6] namn [jumper1,jumper2,...,jumper6] når vi lager filer til desse. For jumper[1,2,3] ser vi frå krinsteikninga at desse er meint kopla. Kople difor pinane 1-2,3-4,5-6,7-8 for desse tre jumperane. Jumper5 og jumper6 skal vere opne. * Alle pull-resistorane kategoriserer vi óg som passive. Når vi skal lage PDD-filer for desse, gjer vi som ved serie-motstanden, bortsett frå at vi skiftar frå Connect->Pull. Connect 1-2. ** No er det dukka opp ein siste resistor, R26. Legg denne til i resistor.pdd. * Under Ignore Devices legg vi kondensatorane, connectorane og "Other Resistors". I tillegg legg vi Switch1 under ignore(denne kjem vi attende til). * Under Test Devices legg vi til IC4,IC5, alle diodane, SW2 og SW3. IC4 gjev vi namnet EEPROM, IC5 gjev vi namnet SRAM, diodane gjev vi namnet LED, SW2 gjev vi namnet pushbutton1 og SW3 gjev vi namnet pushbutton2. * Under Logic Devices legg vi IC1. Frå krinsteikninga finn vi kva komponent IC1 er, og gjev XJDeveloper informasjon om det. Det neste steget er å identifiserer tilkoplingspinnane. Under Pin Mapping ser vi JTAG connectoren. Frå krinsteikninga finn vi korleis denne skal bestemmast(CN1). Dei pinnane som ikkje er gjevne namn i krinsteikninga, lar vi vere "input". === Testing === Det siste steget er å klargjere for test. Under Run and Deploy, finn ein fana XJRunnet Setup. Velg New>Add Global Function>CONNTEST. Gje testen eit fornuftig namn. Save. For å køyre testane som er sett opp under XJRunner-fana, trykk på Run Test-fana, og køyr testen. Når vi tester, ser vi at vi får opp ein short mellom to "created" net på IC2. Desse to neta finst på krinsen, men er ikkje med i netlista. For å be XJDeveloper sjå vekk i frå denne feilen, kople dei to neta saman. Det kan gjerast under fana Connections i venstremargen. Trykk på Add, velg Pin to Pin, og kople dei to neta saman. For å komme unna problemet med at GP1 er stuck at 1/0, går vi inn på Constant Pins-fana og set denne pinen til anten High/Low. Hugs å fysisk sett brytaren SW1 anten High/Low. Viss alt er sett riktig opp, skal vi ikkje lenger få feilmeldingar når vi køyrer testen. For å gje oss høve til å lage feil, er kortet utstyrt med jumperar. Sjå på krinsteikninga, og lag stuck at 0/1, kortslutningsfeil og brotfeil. ==== Minnetest(SRAM) ==== XJDeveloper har laga ei fil SRAM.xje frå informasjonen vi har gjeve programmet. For å kunne bruke ein ferdiglaga, enkel minnestest, modifiserer vi denne fila til å passe med testen. I dokumentasjonsmappa finn du fila SRAM.txt. Erstatt innhaldet i SRAM.xje med SRAM.txt. Den første, og enkle, minnetesten, ligg ligra i dokumentasjonsmappa - SRAM_test.txt. Kopier innhaldet i denne fila, og lim det inn Test Editor. Test Editor er eit av vindauga under Test Device Files-fana i venstremargen. Save. Lag så ein ny test i XJRunner-fana. Velg Add Device Function>IC5>Test. Gje testen eit fornuftig namn. XJTAG har vedlagt demokortdokumentasjonen gjeve oss ein meir utfyllande minnetest. Denne er vedlagt i dokumentasjonsmappa, og heiter memtestSRAM.xje. For å bruke denne, fjerner vi IC5 frå Categorise Devices og deretter SRAM-fila frå Test Device Files. Så kan vi legge IC5 til igjen, men velge Other Device File i staden for Create File. Velg fila som heiter SRAM_SOP28.xje. No kan du køyre testen på nytt. ==== EEPROM-test ==== Vedlagt i dokumentasjonen er fila 24LC23A.xje. Dette er testfila til IC4 - EEPROM. Kopier innhaldet i 24LC23A.xje inn i "Test Editor" under EEPROM i venstremargs-fana Test Device Files. Save. Då får ein to feilmeldingar, fordi funksjonane testen refererer til manglar. Desse finst i IIC.xje, som òg ligg i dokumentasjonen. Under Additional Code Files legg du IIC.xje til EEPROM. Save. På same måte som for SRAM-testen, må vi lage ein EEPROM-test under XJRunner-fana. No kan du køyre testen på nytt. 336babd54f1aca88bba3775be2a47a5747511feb 1807 1806 2012-06-28T11:14:15Z Vho026 70 wikitext text/x-wiki == XJDeveloper == Dette er ei innføring i XJDeveloper. Tilhøyrande dokumentasjon er meint brukt til XJDemo Board versjon 1.2. === Dokumentasjonsmappa === Dokumentasjonsmpappa inneheld: * Krinsskjema * Bilete av demokort v.1.2. * Demokort-netliste * Diverse test-filer * Device-filer === Sette opp kortet === Det fyrste som gjerast er å kople demokortet til datamaskina gjennom XJ Link. Bruk ein av USB-inngongane på baksida av maskina. Deretter må det lagast ei prosjektmappe, som skal innehalde alle filene som vert laga. Mappe-plasseringa speler inga rolle. For å starte XJDeveloper: start>Programs>XJTAG 2.4>XJDeveloper. Lag eit nytt prosjekt, og lagre det i prosjektmappa. Gje prosjektet namnet "demo". Når dette er gjort, dukker dialogboksen "Add board" automatisk opp. I denne boksen gjev du kortet namn, og du gjev XJDeveloper netlista til demokortet. Gje kortet namnet "XJDemo". Netlista finn du i dokumentasjonsmappa - demo.net I tillegg har vi ei BOM-fil, som gjev XJDeveloper tilleggsinformasjon om komponentane på kortet. Denne fila er ikkje strengt naudsynt, men er nyttig. I dokumentasjonen finn du BOM-fila - demo.bom Legg til BOM-fila under BOM-settings. Etter å ha trykka next, set du tredje kolonne til å vere "Device Reference", fjerne kolonne "Value", og siste kolonne til "Device Description". Save. Under Power/Ground Nets i Setup-menyen i venstre marg er det to nett, 3.3V og GND. Dra desse to neta over i riktig kolonne til høgre. No veit XJTAG kva nett som er power og jord, og vil ikkje forsøke å skrive til desse. ==== Identifisere komponentane ==== Neste steg er å identifisere JTAG-kjeden. Trykk på add i Chain Setup. Til høgre for TDI, trykker du på select og vel CN1, pin 5. Trykk OK. Så kjem IC2.B3 opp i Select Next Pin-vinduet. Dra denne ned i JTAG Devices-lista. Trykk på Browse, og velg fila med same namn som IC2, altså XC9536XL_cs48.bsd Gjer det same med IC3.1, 3032at44.bsd. Begge desse filene finst i dokumentasjonsmappa. Neste steget er ein resistor, R49. Dra denne ned i JTAG-Devices-lista, men velg Connect device i den øvste fana. Så vel du Create file. Namngje fila Resistor, og connect 1 til 2. Til slutt kjem IC1.13. Høgreklikk og set denne til TDO. Save. No har vi etablert JTAG-kjeden. Deretter skal vi kategorisere non-JTAG-devices. Under Categorise Devices-fana i venstremargen, finn vi alle komponentane(devices), og ingen er endå kategoriserte. * Risistorane som er markerte med "Suggested Series Resistors" kategoriserer vi som passive komponentar. Dra alle over i "Passive", og velg Resistor.pdd som allereie er laga. * Alle jumperane på krinsen lar vi og vere passive. Gje jumperane[1,2,3,5,6] namn [jumper1,jumper2,...,jumper6] når vi lager filer til desse. For jumper[1,2,3] ser vi frå krinsteikninga at desse er meint kopla. Kople difor pinane 1-2,3-4,5-6,7-8 for desse tre jumperane. Jumper5 og jumper6 skal vere opne. * Alle pull-resistorane kategoriserer vi óg som passive. Når vi skal lage PDD-filer for desse, gjer vi som ved serie-motstanden, bortsett frå at vi skiftar frå Connect->Pull. Connect 1-2. ** No er det dukka opp ein siste resistor, R26. Legg denne til i resistor.pdd. * Under Ignore Devices legg vi kondensatorane, connectorane og "Other Resistors". I tillegg legg vi Switch1 under ignore(denne kjem vi attende til). * Under Test Devices legg vi til IC4,IC5, alle diodane, SW2 og SW3. IC4 gjev vi namnet EEPROM, IC5 gjev vi namnet SRAM, diodane gjev vi namnet LED, SW2 gjev vi namnet pushbutton1 og SW3 gjev vi namnet pushbutton2. * Under Logic Devices legg vi IC1. Frå krinsteikninga finn vi kva komponent IC1 er, og gjev XJDeveloper informasjon om det. Det neste steget er å identifiserer tilkoplingspinnane. Under Pin Mapping ser vi JTAG connectoren. Frå krinsteikninga finn vi korleis denne skal bestemmast(CN1). Dei pinnane som ikkje er gjevne namn i krinsteikninga, lar vi vere "input". === Testing === Det siste steget er å klargjere for test. Under Run and Deploy, finn ein fana XJRunnet Setup. Velg New>Add Global Function>CONNTEST. Gje testen eit fornuftig namn. Save. For å køyre testane som er sett opp under XJRunner-fana, trykk på Run Test-fana, og køyr testen. Når vi tester, ser vi at vi får opp ein short mellom to "created" net på IC2. Desse to neta finst på krinsen, men er ikkje med i netlista. For å be XJDeveloper sjå vekk i frå denne feilen, kople dei to neta saman. Det kan gjerast under fana Connections i venstremargen. Trykk på Add, velg Pin to Pin, og kople dei to neta saman. For å komme unna problemet med at GP1 er stuck at 1/0, går vi inn på Constant Pins-fana og set denne pinen til anten High/Low. Hugs å fysisk sett brytaren SW1 anten High/Low. Viss alt er sett riktig opp, skal vi ikkje lenger få feilmeldingar når vi køyrer testen. For å gje oss høve til å lage feil, er kortet utstyrt med jumperar. Sjå på krinsteikninga, og lag stuck at 0/1, kortslutningsfeil og brotfeil. ==== Minnetest(SRAM) ==== XJDeveloper har laga ei fil SRAM.xje frå informasjonen vi har gjeve programmet. For å kunne bruke ein ferdiglaga, enkel minnestest, modifiserer vi denne fila til å passe med testen. I dokumentasjonsmappa finn du fila SRAM.txt. Erstatt innhaldet i SRAM.xje med SRAM.txt. Den første, og enkle, minnetesten, ligg lagra i dokumentasjonsmappa - SRAM_test.txt. Kopier innhaldet i denne fila, og lim det inn Test Editor. Test Editor er eit av vindauga under Test Device Files-fana i venstremargen. Save. Lag så ein ny test i XJRunner-fana. Velg Add Device Function>IC5>Test. Gje testen eit fornuftig namn. XJTAG har vedlagt demokortdokumentasjonen gjeve oss ein meir utfyllande minnetest. Denne er vedlagt i dokumentasjonsmappa, og heiter memtestSRAM.xje. For å bruke denne, fjerner vi IC5 frå Categorise Devices og deretter SRAM-fila frå Test Device Files. Så kan vi legge IC5 til igjen, men velge Other Device File i staden for Create File. Velg fila som heiter SRAM_SOP28.xje. No kan du køyre testen på nytt. ==== EEPROM-test ==== Vedlagt i dokumentasjonen er fila 24LC23A.xje. Dette er testfila til IC4 - EEPROM. Kopier innhaldet i 24LC23A.xje inn i "Test Editor" under EEPROM i venstremargs-fana Test Device Files. Save. Då får ein to feilmeldingar, fordi funksjonane testen refererer til manglar. Desse finst i IIC.xje, som òg ligg i dokumentasjonen. Under Additional Code Files legg du IIC.xje til EEPROM. Save. På same måte som for SRAM-testen, må vi lage ein EEPROM-test under XJRunner-fana. No kan du køyre testen på nytt. cb81d7006e30de2d9b14963c5c74c6c53d3905b1 1808 1807 2012-06-28T11:26:15Z Vho026 70 wikitext text/x-wiki == XJDeveloper == Dette er ei innføring i XJDeveloper. Tilhøyrande dokumentasjon er meint brukt til XJDemo Board versjon 1.2. === Dokumentasjonsmappa === Dokumentasjonsmpappa inneheld: * Krinsskjema * Bilete av demokort v.1.2. * Demokort-netliste * Diverse test-filer * Device-filer === Sette opp kortet === Det fyrste som gjerast er å kople demokortet til datamaskina gjennom XJ Link. Bruk ein av USB-inngongane på baksida av maskina. Deretter må det lagast ei prosjektmappe, som skal innehalde alle filene som vert laga. Mappe-plasseringa speler inga rolle. For å starte XJDeveloper: start>Programs>XJTAG 2.4>XJDeveloper. Lag eit nytt prosjekt, og lagre det i prosjektmappa. Gje prosjektet namnet "demo". Når dette er gjort, dukker dialogboksen "Add board" automatisk opp. I denne boksen gjev du kortet namn, og du gjev XJDeveloper netlista til demokortet. Gje kortet namnet "XJDemo". Netlista finn du i dokumentasjonsmappa - demo.net I tillegg har vi ei BOM-fil, som gjev XJDeveloper tilleggsinformasjon om komponentane på kortet. Denne fila er ikkje strengt naudsynt, men er nyttig. I dokumentasjonen finn du BOM-fila - demo.bom Legg til BOM-fila under BOM-settings. Etter å ha trykka next, set du tredje kolonne til å vere "Device Reference", fjerne kolonne "Value", og siste kolonne til "Device Description". Save. Under Power/Ground Nets i Setup-menyen i venstre marg er det to nett, 3.3V og GND. Dra desse to neta over i riktig kolonne til høgre. No veit XJTAG kva nett som er power og jord, og vil ikkje forsøke å skrive til desse. ==== Identifisere komponentane ==== Neste steg er å identifisere JTAG-kjeden. Trykk på add i Chain Setup. Til høgre for TDI, trykker du på select og vel CN1, pin 5. Trykk OK. Så kjem IC2.B3 opp i Select Next Pin-vinduet. Dra denne ned i JTAG Devices-lista. Trykk på Browse, og velg fila med same namn som IC2, altså XC9536XL_cs48.bsd Gjer det same med IC3.1, 3032at44.bsd. Begge desse filene finst i dokumentasjonsmappa. Neste steget er ein resistor, R49. Dra denne ned i JTAG-Devices-lista, men velg Connect device i den øvste fana. Så vel du Create file. Namngje fila Resistor, og connect 1 til 2. Til slutt kjem IC1.13. Høgreklikk og set denne til TDO. Save. No har vi etablert JTAG-kjeden. Deretter skal vi kategorisere non-JTAG-devices. Under Categorise Devices-fana i venstremargen, finn vi alle komponentane(devices), og ingen er endå kategoriserte. * Risistorane som er markerte med "Suggested Series Resistors" kategoriserer vi som passive komponentar. Dra alle over i "Passive", og velg Resistor.pdd som allereie er laga. * Alle jumperane på krinsen lar vi og vere passive. Gje jumperane[1,2,3,5,6] namn [jumper1,jumper2,...,jumper6] når vi lager filer til desse. For jumper[1,2,3] ser vi frå krinsteikninga at desse er meint kopla. Kople difor pinane 1-2,3-4,5-6,7-8 for desse tre jumperane. Jumper5 og jumper6 skal vere opne. * Alle pull-resistorane kategoriserer vi óg som passive. Når vi skal lage PDD-filer for desse, gjer vi som ved serie-motstanden, bortsett frå at vi skiftar frå Connect->Pull. Connect 1-2. ** No er det dukka opp ein siste resistor, R26. Legg denne til i resistor.pdd. * Under Ignore Devices legg vi kondensatorane, connectorane og "Other Resistors". I tillegg legg vi Switch1 under ignore(denne kjem vi attende til). * Under Test Devices legg vi til IC4,IC5, alle diodane, SW2 og SW3. IC4 gjev vi namnet EEPROM, IC5 gjev vi namnet SRAM, diodane gjev vi namnet LED, SW2 gjev vi namnet pushbutton1 og SW3 gjev vi namnet pushbutton2. * Under Logic Devices legg vi IC1. Frå krinsteikninga finn vi kva komponent IC1 er, og gjev XJDeveloper informasjon om det. Det neste steget er å identifiserer tilkoplingspinnane. Under Pin Mapping ser vi JTAG connectoren. Frå krinsteikninga finn vi korleis denne skal bestemmast(CN1). Dei pinnane som ikkje er gjevne namn i krinsteikninga, lar vi vere "input". === Testing === Det siste steget er å klargjere for test. Under Run and Deploy, finn ein fana XJRunnet Setup. Velg New>Add Global Function>CONNTEST. Gje testen eit fornuftig namn. Save. For å køyre testane som er sett opp under XJRunner-fana, trykk på Run Test-fana, og køyr testen. Når vi tester, ser vi at vi får opp ein short mellom to "created" net på IC2. Desse to neta finst på krinsen, men er ikkje med i netlista. For å be XJDeveloper sjå vekk i frå denne feilen, kople dei to neta saman. Det kan gjerast under fana Connections i venstremargen. Trykk på Add, velg Pin to Pin, og kople dei to neta saman. For å komme unna problemet med at GP1 er stuck at 1/0, går vi inn på Constant Pins-fana og set denne pinen til anten High/Low. Hugs å fysisk sett brytaren SW1 anten High/Low. Viss alt er sett riktig opp, skal vi ikkje lenger få feilmeldingar når vi køyrer testen. For å gje oss høve til å lage feil, er kortet utstyrt med jumperar. Sjå på krinsteikninga, og lag stuck at 0/1, kortslutningsfeil og brotfeil. ==== Minnetest(SRAM) ==== XJDeveloper har laga ei fil SRAM.xje frå informasjonen vi har gjeve programmet. For å kunne bruke ein ferdiglaga, enkel minnestest, modifiserer vi denne fila til å passe med testen. I dokumentasjonsmappa finn du fila SRAM.txt. Erstatt innhaldet i SRAM.xje med SRAM.txt. Den første, og enkle, minnetesten, ligg lagra i dokumentasjonsmappa - SRAM_test.txt. Kopier innhaldet i denne fila, og lim det inn Test Editor. Test Editor er eit av vindauga under Test Device Files-fana i venstremargen. Save. Lag så ein ny test i XJRunner-fana. Velg Add Device Function>IC5>Test. Gje testen eit fornuftig namn. XJTAG har vedlagt demokortdokumentasjonen gjeve oss ein meir utfyllande minnetest. Denne er vedlagt i dokumentasjonsmappa, og heiter memtestSRAM.xje. For å bruke denne, høgreklikker vi på IC5 i Categorised Devices>Configure>Other Device File>SRAM_SOP24.xje. Dette legg automatisk memtestSRAM.xje til som tilleggskode. No kan testen køyrast på nytt. Bruk jumperane kring minnekrinsen til å lage feil. ==== EEPROM-test ==== Vedlagt i dokumentasjonen er fila 24LC23A.xje. Dette er testfila til IC4 - EEPROM. Kopier innhaldet i 24LC23A.xje inn i "Test Editor" under EEPROM i venstremargs-fana Test Device Files. Save. Då får ein to feilmeldingar, fordi funksjonane testen refererer til manglar. Desse finst i IIC.xje, som òg ligg i dokumentasjonen. Under Additional Code Files legg du IIC.xje til EEPROM. Save. På same måte som for SRAM-testen, må vi lage ein EEPROM-test under XJRunner-fana. No kan du køyre testen på nytt. c9b203075f083fb28fd95b8f61e722a5073031f1 FOCAL - Forward Calorimeter 0 317 1812 1757 2012-08-10T14:46:19Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== * [[Setting Up PetaLinux System]] * Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk petalinux_sdk] * [[Get readout box up and running]] * [[Programming Mimosa chips]] * [[Readout software]] [[Category:Mikroelektronikk]] b2353cbcb20bd55f2dc202eae44acde51cfaea94 1813 1812 2012-08-10T14:47:13Z Dfe002 7 wikitext text/x-wiki This page should contain information about the Focal project, especially about the interfacing from the Mimosa chips to the readout electronics. == Overview == [[Media:Focal readout.pdf|Simple description of the Alice Focal readout electronics]]. == Mimosa chips == * [[Media:PH1-UserMan-20080916.pdf|preliminary user manual of Phase1]] * [[Media:mimosa.bsd.txt|BSDL file of Phase1]], which can be used for JTAG test, such as with an XJTAG module. * [[Media:pattern_test.svf.txt|SVF file for pattern-only mode test of Phase1]], Use XJTAG to configure Phase1 chip with it, LVDS data output signals will appear on the 4 channels after supplying 160MHz differential clock and START signal. == Readout electronics == === Adapterboard /Fanoutboard === The adapterboard and fan-out boards provide LVDS interfaces and JTAG interfaces between the Control and Read-out board and the Mimosa ASICs. Here is [[Media:Focal_read-out_board_schematics.pdf|the schematics of the boards]]. * Spartan6 FPGA type: [http://www.xilinx.com/support/documentation/spartan-6.htm XC6SLX150-FGG676, speed-grade: 3] * Examples of user constraint files for Spartan6 FPGAs: [[Media:U1.ucf.txt| U1 ]],[[Media:U2.ucf.txt| U2 ]] * EXamples of VHDL entity definations for Spartan6 FPGAs: [[Media:U1.vhdl.txt| U1 ]],[[Media:U2.vhdl.txt| U2 ]] === Control and Readout board === The idea is to use a [http://www.xilinx.com/products/devkits/EK-V6-ML605-G.htm Xilinx Virtex 6 development board] as a first prototype. The board will run Petalinux, and some software to access the firmware registers. A software framework for the TPC detector is to be adapted for the use on the Virtex 6 board and Petalinux. *[[Media:ML605.ucf.txt|FPGA user constraint file for Virtex 6 development board]] ==== Firmware ==== The VHDL counterpart is to be found here: http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/alice-fw/trunk/messagebuffer/ ==== Software ==== * [[Setting Up PetaLinux System]] * Petalinux documentation: [http://www.petalogix.com/resources/documentation/petalinux_sdk petalinux_sdk] * [[Get readout box up and running]] * [[Programming Mimosa chips]] ==Readout software== [[Report by Tony]] [[Category:Mikroelektronikk]] b14ba707648f6ccdd1f9171f383cca1b69d73594 Report by Tony 0 411 1814 2012-08-10T14:47:25Z Dfe002 7 Created page with 'blabla' wikitext text/x-wiki blabla bb21158c733229347bd4e681891e213d94c685be DAMARA 0 331 1816 1771 2012-09-03T15:09:36Z Kmo078 65 Added link to astropart. phys page wikitext text/x-wiki == General Information == * [[What to do when you come to Bergen as a new student]] * [[What to do when you come to CERN for the first time]] * [[If you are a short time visitor]] * [[CTA information]] (how to get accounts, get on lists and access) * [[ATLAS information]] (how to get accounts, get on lists and access) == Useful links == * Our web-page: http://www.uib.no/People/hsa061/DAMARA/Welcome.html * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasComputing * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasPhysics * [[Terminology]] * [[Useful papers]] == Computing == When you have an ATLAS account you can work your way through this link: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/WorkBook When this is done you can try this one: * https://twiki.cern.ch/twiki/bin/view/AtlasProtected/PhysicsAnalysisWorkBook A set of tutorials can be found here: * https://twiki.cern.ch/twiki/bin/viewauth/Atlas/ComputingTutorials Root homepage with tutorials, downloads, etc. * http://root.cern.ch/drupal/ Other stuff: * [[Info about D3PD analysis variables]] * [[Useful Linux commands]] * [http://vic.gedris.org/Manual-ShellIntro/1.2/ShellIntro.pdf Small intro to Linux (pdf)] * [[Installing DarkSusy]] * [[Installing ISAJET]] * [[Astroparticle Physics]] == [[DamaraResults|Results]] == * [[DamaraResults#Outreach|Outreach]] * [[DamaraResults#Presentations|Presentations]] * [[DamaraResults#Publications|Publications]] * [[DamaraResults#Theses|Theses]] 9cb5ae2e8cd439cc5b5bd13465262e5e06aa9faa Astroparticle Physics 0 412 1817 2012-09-03T15:13:34Z Kmo078 65 Lagde side wikitext text/x-wiki =Astroparticle physics= == Useful links == [http://viavca.in2p3.fr/site.html Virtual Institute of Astroparticle Physics] [http://ihp-lx2.ethz.ch/AstroTeilchen/ ETH Zürichs astropartikkel-fag] 0731c0061f5060a6e142824e4070151a97a30be1 1818 1817 2012-09-03T15:14:16Z Kmo078 65 wikitext text/x-wiki =Astroparticle physics= == Useful links == [http://viavca.in2p3.fr/site.html Virtual Institute of Astroparticle Physics] [http://ihp-lx2.ethz.ch/AstroTeilchen/ ETH Zürichs astropartikkel-fag] 1fcb3e56e5dae04abb9a6cff457b38fb3a257d12 1819 1818 2012-09-03T15:14:48Z Kmo078 65 wikitext text/x-wiki =Astroparticle physics= == Useful links == *[http://viavca.in2p3.fr/site.html Virtual Institute of Astroparticle Physics] *[http://ihp-lx2.ethz.ch/AstroTeilchen/ ETH Zürichs astropartikkel-fag] d21e36a67864fb747ccb738c5e0d664eb89fb0f8 1820 1819 2012-09-05T10:54:45Z Kmo078 65 Added list of topics wikitext text/x-wiki =Astroparticle physics= Astroparticle physics combines our knowledge of how fundamental particles interact with observations of our universe. Great advances in understanding the early universe has followed from this happy union. == Relevant topics == (with help from Prekins: Particle Astrophysics * Particles & Interactions ** * Cosmology ** * Astrophysical sources ** == Useful links == *[http://viavca.in2p3.fr/site.html Virtual Institute of Astroparticle Physics] *[http://ihp-lx2.ethz.ch/AstroTeilchen/ ETH Zürichs astropartikkel-fag] [[Category:Particle Physics]] acee008afa42e8e929caf01a957293a6bccfde95 1821 1820 2012-09-05T10:55:01Z Kmo078 65 wikitext text/x-wiki =Astroparticle physics= Astroparticle physics combines our knowledge of how fundamental particles interact with observations of our universe. Great advances in understanding the early universe has followed from this happy union. == Relevant topics == (with help from Prekins: Particle Astrophysics * Particles & Interactions ** * Cosmology ** * Astrophysical sources ** == Useful links == *[http://viavca.in2p3.fr/site.html Virtual Institute of Astroparticle Physics] *[http://ihp-lx2.ethz.ch/AstroTeilchen/ ETH Zürichs astropartikkel-fag] [[Category:Particle Physics, DAMARA]] 654a94c4dab9158428f9507ed3664a032fe03524 1822 1821 2012-09-05T11:23:01Z Kmo078 65 Added more in list of topics wikitext text/x-wiki =Astroparticle physics= Astroparticle physics combines our knowledge of how fundamental particles interact with observations of our universe. Great advances in understanding the early universe has followed from this happy union. == Relevant topics == (with help from Prekins: Particle Astrophysics * Particles & Interactions ** The standard model is largely covered by courses @ UIB- short review ** Beyond standard model overview *** Dark matter candidates *** Supersymmetry *** Others * Cosmology ** A summary of experimental evidence behind the cosmological standard model; \Lambda CDM ** The Friedmann equation + some GR review ** Energy density, size of universe,CMB radiation ** Particles in the early universe ** Nucleosynthesis & matter/antimatter asymmetry ** Dark matter *** Signatures *** Evidence *** Candidates ** Dark Energy ** Early structure formation * Astrophysical sources ** Cosmic particles ** Stars & Galaxies == Useful links == *[http://viavca.in2p3.fr/site.html Virtual Institute of Astroparticle Physics] *[http://ihp-lx2.ethz.ch/AstroTeilchen/ ETH Zürichs astropartikkel-fag] [[Category:Particle Physics]] 814ac837b9dd4e5554e85c324ddaadceda4d75f9 DamaraResults 0 348 1823 1809 2012-09-21T13:19:18Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes * "Higgs-Mekanismen", presentasjon for Bergen Katedralskole (19.12.2011) Knut Morå * ''Den siste biten i puslespillet?'', Kronikk i Bergens tidende (05.09.2012), Trygve Buanes og Bjarne Stugu == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes * Thesis plans, Stockholm meeting [File:Stockholmpresentation120323.pdf] (12.mars 2012), Knut Morå == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844 ATL-COM-PHYS-2011-1619] (25. november 2011) == Theses == === Master === === PhD === 7d4a7ebec17351cb5ce1551687c666cd79a54d01 1824 1823 2012-10-01T14:25:12Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes * "Higgs-Mekanismen", presentasjon for Bergen Katedralskole (19.12.2011) Knut Morå * ''Den siste biten i puslespillet?'', Kronikk i Bergens tidende (05.09.2012), Trygve Buanes og Bjarne Stugu * ''Universets mørke sider'', Besøk fra Haram videregående skole (01.10.2012), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes * Thesis plans, Stockholm meeting [File:Stockholmpresentation120323.pdf] (12.mars 2012), Knut Morå * "CTA : Gamma line emission searches", [http://indico.cern.ch/conferenceDisplay.py?confId=205146 DAMARA Scientific Advisory Committee Meeting] (23.08.2012) * "CTA : Camera calibration test-setup and plans", [http://indico.cern.ch/conferenceDisplay.py?confId=205146 DAMARA Scientific Advisory Committee Meeting] (23.08.2012) == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844 ATL-COM-PHYS-2011-1619] (25. november 2011) == Theses == === Master === === PhD === 8a86971a908375934623748d656ed9c1d97164c0 1825 1824 2012-10-01T14:27:08Z St01355 57 wikitext text/x-wiki == Outreach == * ''Verdens største mikroskop – om ATLAS-eksperimentet på CERN'', [https://fft.uib.no/2011/02/28/program-for-nfk-2011/ Norske fysikkstudenters konferanse 2011] (13. mars 2011), Trygve Buanes * ''Masterprogrammer i partikkelfysikk'', [http://www.uib.no/ift/seminar/2011/03/fellesseminar-masterstudier-i-fysikk Fellesseminar/infomøte] (18. mars 2011), Trygve Buanes * ''Universets mørke sider'', Besøk fra Danielsen videregående skole (15. september), Trygve Buanes * ''Researcher's corner'', [http://www.vilvite.no/index.php?action=post&id=1054 Researchers' night] (23. september 2011), Trygve Buanes * ''Vitenskapens usanne "sannheter"'', [http://www.nrk.no/nyheter/1.7805749 nrk.no], (24. september 2011), Trygve Buanes * Interview with NTB, Norwegian news agency (15.6.2011), two articles, Heidi Sandaker * “Forskere - til datamaskinene”, [http://www.forskning.no/artikler/2011/april/284940], Forskning.no, (8.4.2011), Heidi Sandaker * Norwegian teachers program [http://indico.cern.ch/conferenceDisplay.py?confId=130206] (13-18.03.2011), Heidi Sandaker * “Skyter med antistråler”, På høyden og Forskning.no, [http://nyheter.uib.no/?modus=vis_nyhet&id=48331] (24.2.2011), Heidi Sandaker * Several guided tours for visitors at ATLAS and at CERN (2010 - 2011), Heidi Sandaker * Norwegian mini-winterschool (2-4.11.2011), Trygve Buanes og Heidi Sandaker * "Brutt lyshastigheten. Hva så?", Forskning.no (24.9.2011), Heidi Sandaker * "Hektisk blant verdens fysikere", Forskning.no (10.10.2011), Heidi Sandaker * Interview with Studentradioen i Bergen about the Nobel prize in physics (19.10.2011), Trygve Buanes * ''Universets mørke sider'', Bergen astronomiske forening (9. november), Trygve Buanes * "Higgs-Mekanismen", presentasjon for Bergen Katedralskole (19.12.2011) Knut Morå * ''Den siste biten i puslespillet?'', Kronikk i Bergens tidende (05.09.2012), Trygve Buanes og Bjarne Stugu * ''Universets mørke sider'', Besøk fra Haram videregående skole (01.10.2012), Trygve Buanes == Presentations == === Conferences === * ''Unified Dark Sector'', [https://wikihost.uib.no/ift/images/7/76/UDMOverview2.pdf Fysikermøtet 2011] (22. juni 2011), Jan Lindroos * Presentation at the CTA workshop in Toulouse, May 2011, Heidi Sandaker * ''Looking for light from dark matter'', [http://indico.cern.ch/conferenceDisplay.py?confId=194991 Faggruppemøte for subatomær fysikk og astrofysikk] (27.09.2012) === Seminars etc === * ''Raskere en lyset?'', [http://www.uib.no/ift/foredrag/2011/09/raskere-enn-lyset Fellesseminar, IFT, UiB] (30. september 2011), Trygve Buanes * ''The Phantom of the OPERA'', [http://www.ntnu.edu/web/physics/colloquia/-/asset_publisher/H96i/content/october-14?redirect=http%3a%2f%2fwww.ntnu.edu%2fweb%2fphysics%2fcolloquia%3fp_p_id%3d101_INSTANCE_H96i%26p_p_lifecycle%3d0%26p_p_state%3dnormal%26p_p_mode%3dview%26p_p_col_id%3dcolumn-3%26p_p_col_pos%3d3%26p_p_col_count%3d4 Fredagskollokvium, NTNU] (14. september 2011), Trygve Buanes === Working group meetings etc === * ''Signal optimisation studies'', [https://indico.cern.ch/conferenceTimeTable.py?confId=132275#20110414.detailed Rare b decays workshop] (14. april 2011), Trygve Buanes * ''Separation of ttbar and SUSY with kinematic fitting'', [https://indico.cern.ch/conferenceDisplay.py?confId=142345 Informal SUSY with taus] (8. juni 2011), Trygve Buanes * ''Update on KLFitter'', [https://indico.cern.ch/conferenceDisplay.py?confId=143208 Informal SUSY with taus] (15. juni 2011), Trygve Buanes * ''Study of CTA sensitivity for gamma line-emission searches'', [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Trygve Buanes * "mSUGRA high tan(beta) grid" [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Jan Lindroos * Plans for CTA membership, [http://www.mn.uio.no/astro/english/research/groups/cosmology/events/dm_meeting.html Norwegian Dark Matter Meeting] (21. october 2011), Heidi Sandaker * ''Update on 1tau analysis on rel17'', [https://indico.cern.ch/conferenceDisplay.py?confId=156610 Informal SUSY with taus] (1. november 2011), Trygve Buanes * Thesis plans, Stockholm meeting [File:Stockholmpresentation120323.pdf] (12.mars 2012), Knut Morå * "CTA : Gamma line emission searches", [http://indico.cern.ch/conferenceDisplay.py?confId=205146 DAMARA Scientific Advisory Committee Meeting] (23.08.2012) * "CTA : Camera calibration test-setup and plans", [http://indico.cern.ch/conferenceDisplay.py?confId=205146 DAMARA Scientific Advisory Committee Meeting] (23.08.2012) == Publications == === Journals === === Conference proceedings === === Internal notes === * ''Search for supersymmetry in the coannihilation region with taus, jets and missing transverse energy in the final state'', [http://cdsweb.cern.ch/record/1385579 ATL-COM-PHYS-2011-1304] (28. september 2011) * ''Limit on Bs → μμ based on 2.4 fb−1 of integrated luminosity'', [https://cdsweb.cern.ch/record/1401844 ATL-COM-PHYS-2011-1619] (25. november 2011) == Theses == === Master === === PhD === ccbbffd2bb100f63f14a79c4798003fab4606e4e Useful papers 0 405 1826 1815 2012-11-16T13:51:34Z Kmo078 65 wikitext text/x-wiki Astroparticle ----------------------- * Investigating Gamma-Ray Lines from Dark Matter with Future Observatories: http://arxiv.org/abs/1207.6773 * Fermi-Lat: http://arxiv.org/abs/1205.2739 * Weniger: http://arxiv.org/abs/1204.2797 * Servant: http://arxiv.org/abs/0912.0004 * Profumo: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] 7628a24418832172c60b2dfcd1810a5ba05097fd 1833 1826 2013-04-16T12:31:52Z St01355 57 wikitext text/x-wiki Astroparticle ----------------------- * Investigating Gamma-Ray Lines from Dark Matter with Future Observatories: http://arxiv.org/abs/1207.6773 * Fermi-Lat: http://arxiv.org/abs/1205.2739 * Weniger: http://arxiv.org/abs/1204.2797 * Servant: http://arxiv.org/abs/0912.0004 * Profumo: http://inspirebeta.net/record/901431 * Ellis: http://arxiv.org/pdf/1112.3564.pdf * Olga Bessidskaia master thesis: [[File:RapportOlgaMaster.pdf]] * Hofmann et al: http://arxiv.org/abs/astro-ph/9908092 (Energy determination with IACT) 74cbc6866c367131a934ab40c03068b5e6fb9ae8 Microelectronics group 0 25 1827 1805 2013-02-15T10:51:30Z Tni071 73 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio]] Create a component symbol using a SPICE file * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) [[Category:Mikroelektronikk]] 770604487c7e5a305afa4751d6a48f5e8d5129a9 1828 1827 2013-02-15T10:52:20Z Tni071 73 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE Symbol]] Create a component symbol using a SPICE file * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) [[Category:Mikroelektronikk]] bde513d8f0be17f3260d7d5580dff4fd8cfa3d86 1831 1828 2013-02-15T11:50:07Z Tni071 73 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) [[Category:Mikroelektronikk]] fb18b8b3d7fb4ee48cde2c257416f9a62ecbd12b 1841 1831 2013-06-12T16:10:47Z Ave082 33 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[SmartFusion2]] Oppsett og design med SF2 [[Category:Mikroelektronikk]] 61882b01025f56bafa41ffb01548c1488efc5868 IC studio - SPICE Symbol 0 413 1829 2013-02-15T10:54:53Z Tni071 73 SPICE Symbol tutorial added wikitext text/x-wiki = Include a SPICE File in IC Studio = This is a description of how to download a spice file from the web and include it in your IC studio project. A symbol is created to represent the component described by the spice file, and the procedure of linking the spice file to your symbol is described (See the [[IC studio]] tutorial if you are new to symbols). The AD8000 opamp is used as an example throughout this tutorial. ==Download a SPICE File== Search the internet for a spice model, i.e. ``AD8000 spice model''. The vendor will normally provide such a file which can be downloaded. Open the file (ad8000p.cir) in a text editor and scroll down to the node assignments. The node assignments should match (identically) the pins of your soon to be created symbol. * Node assignments * non-inverting input * | inverting input * | | positive supply * | | | negative supply * | | | | output * | | | | | Power down * | | | | | | .SUBCKT AD8000 1 2 Vcc Vee Vout PD ==Create a Symbol== First you have to create a project library as explained in [[IC studio]]. In the cell view you should create a cell for your component which is of the view type ``symbol''. The next step is to start drawing your symbol with the desired shape and pins: Use the palette on the left side of the screen to draw lines, or use a predefined shape (i.e. a rectangle). From the same palette you can choose the ``Add Pin'' button. Choose the pin preferences as you find suitable, but note that the pin names must be identical to the node assignments in the spice file. Place your pins and create a nice symbol... ==Relate a SPICE File to a Symbol== Now you have a symbol, but it does not have any relation to the spice file except from the pin names. Right click on the cell you just made and add a new view of the type ``spice''. An almost blank spice file will pop up in the IC Studio text editor. Delete what is there and go to ``file->insert file`` and choose the spice file you have downloaded (you can also copy-paste the spice file) - save it. When you close the text editor, you will get a message: ''Spice File Changed - Do you want to change the top sub-circuit``? Press yes and select the desired sub-circuit name. The following message should appear in IC Studio: // Starting Spice registration ... please wait // Note: Registering SPICE model "AD8000" with symbol "ad8000" // Note: Registration succeeded Create a new cell with your top-level circuit (''schematic`` view). Now you can include the component by ''Right-click -> Instance -> Choose Symbol -> Your symbol`` and draw your circuit around it. That's it! ==Doesn't Work?== *Did you ''Create Viewpoint`` as described in [[IC studio]]? *Did you ''Set Simulation Models`` as described in [[IC studio]]? *Did you choose an "Analysis" (i.e. "Transient" or "DC") to be performed in simulation mode? *Do the node assignments correspond to the pin names on your symbol? *Some spice models you find on the web are written for PSPICE, HSPICE or some other SPICE language that might have syntax which is not supported by ELDO. Try to comment these out within the SPICE file, or replace them with similar syntax (see ELDO User's Manual). [[Category:Mikroelektronikk]] 5a87cbf0682ee72832be6c80b54363be1d089615 1830 1829 2013-02-15T11:46:59Z Tni071 73 wikitext text/x-wiki = Include a SPICE File in IC Studio = This is a description of how to download a spice file from the web and include it in your IC studio project. A symbol is created to represent the component described by the spice file, and the procedure of linking the spice file to your symbol is described (See the [[IC studio]] tutorial if you are new to symbols). The AD8000 opamp is used as an example throughout this tutorial. ==Download a SPICE File== Search the internet for a spice model, i.e. "AD8000 spice model". The vendor will normally provide such a file which can be downloaded. Open the file (ad8000p.cir) in a text editor and scroll down to the node assignments. The node assignments should match (identically) the pins of your soon to be created symbol. * Node assignments * non-inverting input * | inverting input * | | positive supply * | | | negative supply * | | | | output * | | | | | Power down * | | | | | | .SUBCKT AD8000 1 2 Vcc Vee Vout PD ==Create a Symbol== First you have to create a project library as explained in [[IC studio]]. In the cell view you should create a cell for your component which is of the view type "symbol". The next step is to start drawing your symbol with the desired shape and pins: Use the palette on the left side of the screen to draw lines, or use a predefined shape (i.e. a rectangle). From the same palette you can choose the "Add Pin" button. Choose the pin preferences as you find suitable, but note that the pin names must be identical to the node assignments in the spice file. Place your pins and create a nice symbol... ==Relate a SPICE File to a Symbol== Now you have a symbol, but it does not have any relation to the spice file except from the pin names. Right click on the cell you just made and add a new view of the type "spice". An almost blank spice file will pop up in the IC Studio text editor. Delete what is there and go to "file->insert file" and choose the spice file you have downloaded (you can also copy-paste the spice file) - save it. When you close the text editor, you will get a message: "Spice File Changed - Do you want to change the top sub-circuit"? Press yes and select the desired sub-circuit name. The following message should appear in IC Studio: // Starting Spice registration ... please wait // Note: Registering SPICE model "AD8000" with symbol "ad8000" // Note: Registration succeeded Create a new cell with your top-level circuit ("schematic" view). Now you can include the component by "Right-click -> Instance -> Choose Symbol -> Your symbol" and draw your circuit around it. That's it! ==Doesn't Work?== *Did you "Create Viewpoint" as described in [[IC studio]]? *Did you "Set Simulation Models" as described in [[IC studio]]? *Did you choose an "Analysis" (i.e. "Transient" or "DC") to be performed in simulation mode? *Do the node assignments correspond to the pin names on your symbol? *Some spice models you find on the web are written for PSPICE, HSPICE or some other SPICE language that might have syntax which is not supported by ELDO. Try to comment these out within the SPICE file, or replace with supported syntax (see ELDO User's Manual). [[Category:Mikroelektronikk]] f188c12a290f59cfa4693f284db37a1edaf432a1 IC studio - SPICE/Symbol Tutorial 0 414 1832 2013-02-15T11:52:49Z Tni071 73 SPICE Symbol tutorial added wikitext text/x-wiki = Include a SPICE File in IC Studio = This is a description of how to download a spice file from the web and include it in your IC studio project. A symbol is created to represent the component described by the spice file, and the procedure of linking the spice file to your symbol is described (See the [[IC studio]] tutorial if you are new to symbols). The AD8000 opamp is used as an example throughout this tutorial. ==Download a SPICE File== Search the internet for a spice model, i.e. "AD8000 spice model". The vendor will normally provide such a file which can be downloaded. Open the file (ad8000p.cir) in a text editor and scroll down to the node assignments. The node assignments should match (identically) the pins of your soon to be created symbol. * Node assignments * non-inverting input * | inverting input * | | positive supply * | | | negative supply * | | | | output * | | | | | Power down * | | | | | | .SUBCKT AD8000 1 2 Vcc Vee Vout PD ==Create a Symbol== First you have to create a project library as explained in [[IC studio]]. In the cell view you should create a cell for your component which is of the view type "symbol". The next step is to start drawing your symbol with the desired shape and pins: Use the palette on the left side of the screen to draw lines, or use a predefined shape (i.e. a rectangle). From the same palette you can choose the "Add Pin" button. Choose the pin preferences as you find suitable, but note that the pin names must be identical to the node assignments in the spice file. Place your pins and create a nice symbol... ==Relate a SPICE File to a Symbol== Now you have a symbol, but it does not have any relation to the spice file except from the pin names. Right click on the cell you just made and add a new view of the type "spice". An almost blank spice file will pop up in the IC Studio text editor. Delete what is there and go to "file->insert file" and choose the spice file you have downloaded (you can also copy-paste the spice file) - save it. When you close the text editor, you will get a message: "Spice File Changed - Do you want to change the top sub-circuit"? Press yes and select the desired sub-circuit name. The following message should appear in IC Studio: // Starting Spice registration ... please wait // Note: Registering SPICE model "AD8000" with symbol "ad8000" // Note: Registration succeeded Create a new cell with your top-level circuit ("schematic" view). Now you can include the component by "Right-click -> Instance -> Choose Symbol -> Your symbol" and draw your circuit around it. That's it! ==Doesn't Work?== *Did you "Create Viewpoint" as described in [[IC studio]]? *Did you "Set Simulation Models" as described in [[IC studio]]? *Did you choose an "Analysis" (i.e. "Transient" or "DC") to be performed in simulation mode? *Do the node assignments correspond to the pin names on your symbol? *Some spice models you find on the web are written for PSPICE, HSPICE or some other SPICE language that might have syntax which is not supported by ELDO. Try to comment these out within the SPICE file, or replace with supported syntax (see ELDO User's Manual). [[Category:Mikroelektronikk]] f188c12a290f59cfa4693f284db37a1edaf432a1 Electronics for the Time Projection Chamber (TPC) 0 4 1834 1725 2013-05-21T11:56:36Z Stud4729 6 wikitext text/x-wiki == Overview == [[Image:RCU_DCS_sketch.png|thumb|500px|center|Sketch of the Readout Control Unit]] == DCS board firmware for TPC and PHOS == === Overview === [[Image:DCS_FW.png|thumb|350px|Schematic Overview of the DCS firmware for TPC/PHOS]] The communication to the firmware in both the Xilinx FPGA and the Actel FPGA on the RCU board is done with the RCU Communication Module. This is done by using a memory mapped interface. The Linux driver writes blocks of data down to a memory in the RCU Communication Module where it is decoded and executed; hence data is being written to or read from the RCU Firmware. Historically the RCU Communication Module only consisted of the Memory Mapped Communication Mode, but as the reconfiguration circuitry on the RCU board was designed, the need of using the bus lines in different ways arose. In addition to this normal communication path, two other ways to communicate is added, namely the RCU flash interface or the Selectmap interface of the RCU. There are several reasons for having these two interfaces on the DCS board * Speed. Using the default memory mapped mode to communicate with the flash memory is not very efficient. Simply moving the flash interface and the selectmap interface to the DCS board, using the Actel as a route-through firmware makes it much faster. * Space. The Actel APA075 has limited capacity. To be able to fit in all the needed functionality, all modules that is not needed in the Actel should be removed. * Robustness. Since the Actel is not possible to update after installation, doing potential bugfixes is impossible. Moving firmware modules to the DCS board ensures that communication paths to the Selectmap Interface and the Flash Device will always be available. === Update of the DCS Board Flash Device === There are two ways of updating the DCS board. The cards that are properly set up should read firmware version 2.6uib when logging in, if intended to use together with the RCU. For the Trigger OR and the BusyBox a special firmware has been made. This firmware is available here so in principle is possible to do the updates when needed, but if any questions, please don't hesitate to ask us. If you get cards directly from Heidelberg where they are produced, updates are needed if intended to use with TPC/PHOS.<br><br> The ways of updating the boards are given at the DCS page of [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html Tobias Krawutschke]. The important thing is that the .hex file is generated here in Bergen. It should be matching the board number written on the board with felt pen.<br><br> ====Updating the DCS boards:==== # Using the exc_flash_programmer tool from Altera together with the Byteblaster programmer. <br> #: Then you do as described in under Firmware download - exc_flash_programmer in the link given above. In addition it is of high importance that you use Quartus II versions older or equal to ''4.1''. At least this is the last version of Quartus II that support the device on the DCS board. Unfortunately Altera won't support us on this any longer since the device is outdated so it is hard to give a precise answer to what might be wrong in case it fails.</li> # Using the tool remoteupdate4.sh<br> This is to be run on a remote linux system in the same network as the dcs system. "Srec cat" tool is mandatory. (Can be downloaded from the page of Tobias) The important thing here is that the DCS board needs to be running "correctly" in the first place to be able to do this. Correctly means that you have the network working seamlessly.</li> Please note that these two ways update the complete Flash Memory, meaning the firmware, the boot section, the Kernel and the file system (the last way makes it possible to choose what part to update). This is sometimes mandatory depending on the firmware version - and it is a lot more "safe" since you then get the latest drivers and software etc... === Version history === '''1.0 (~april 2004)''' <br> <ul> <li> Made based upon TRD DCS FW version 011. </li> <li> Messagebuffer v1.0 (Torsten Alts orginal version)</li> <li> Virtex driver for programming RCU FPGA included </li> </ul> <br> '''2.0 (~may 2005)'''<br> <ul> <li> Updated Messagerbuffer</li> <ul> <li> new header format</li> </ul> </ul> <br> '''2.1 (12.12.2005)'''<br> <ul> <li> Updated messagebuffer:</li> <ul> <li> Fixed the bug of multiread/multiwrite that was introduced with new header format in v2.0.</li> <li> compressing possible (2x16, 3x10, 4x8)</li> </ul> </ul> <br> '''2.2 (05.01.2006)'''<br> <ul> <li> Updated messagebuffer: </li> <ul> <li> Bugfix of reset state a state machine in rcu_master module</li> <li> Bugfix in configuration controller on checking the command/address on multiread</li> <li> Bugfix in configuration controller on multiwrite with compressing</li> <li> Fix in the compressing so that the way to count words matches the requirements.</li> <li> When compressing, writing/reading is switched from Big Endian to Little Endian.</li> <li> Included version, mode_select module and flash interface in messagebuffer module</li> <li> Made new set of commands for flash communication</li> <li> Synthesized using precission - using an edf file in Quartus.</li> <li> fw r also resets certain fw modules on the dcs board. </li> <li> Flash interface is reseted whenever flash mode is not selected.</li> </ul> <li>Updated ARM stripe</li> <ul> <li> Removed Direct PIO Flash interface</li> </ul> </ul> <br> Known issues in v2.2:<br> <ul> <li> Flash interface can hang. (precautions taken but error may still be there.) FW reset (rcu-sh fw r) or changing mode will clear this problem.</li> </ul> <br> '''2.3 (27.02.2006)'''<br> <ul> <li>Updated messagebuffer: </li> <ul> <li> Multiplexer that chooses to send BunchCount Reset or EventCount Reset to RCU using the Aux4 line. Select by using memory mapped interface on DCS board. Reg addr 0x4A00 selects BunchCount Reset. Reg addr 0x4A01 selects EventCount Reset </li> <li> Mem Mapped Version register added: 8b'day & 4b'Month & 4b'Year & 8b'MajorNumber & 8b'MinorNumber: Reg addr 0xBF00 </li> <li> Interrupt (negative polarity) from Slow Control moved to RegFile Address of ARM stripe (0x80000060). Stripe Interrupt address IRW_INT_PLD[5] </li> <li> ComStat register is made more robust using triple redundancy.</li> </ul> </ul> <br> '''2.4 (19.03.2006)''' <br> <ul> <li>RCU Communication Module:</li> <ul> <li> Memory size is made generic.</li> <li> Added tristate select input for selectmap mode.</li> <li> Increased timeout period of RCU mem mapped communication to 32 clks</li> <li> Increased length of WE and CE pulses of flash interface</li> <li> Changed tristate select for Flash interface </li> <li> Increased wait time for flash read</li> </ul> </ul> <br> '''2.5 (08.05.2006)'''<br> <ul> <li> VREG Module updated with new version from KIP</li> <li> Timing warnings removed with correct constraints settings</li> <li> Removed all "sensitivity list" warnings in ethernet, jtag, vreg and i2c module.</li> <li> All controlable outputs to RCU (except dcs_ctrl[7:6] = "00") is set to high impedance if output_enable_n = 1 is high.</li> <li> output_enable_n is set by bit 4 in ComStat register </li> </ul> <br> '''2.6 (01.08.2006)'''<br> <ul> <li> RCU Flash Interface rebuilt to match latest version of Actel FW (v1.3)</li> <li> Better error handling in Flash interface. Checks for RynBy line, as well as bit q(5) of flashdata.</li> <li> Added Comstat(5) as DCS FW reset. </li> <li> Changed rcu_data(15) in Flash mode to input f_rynBy</li> <li> Made a new generic that makes it possible to select the type of Flash of the RCU board. BB = boot sector in the beginning, BT = boot sector at the end.</li> </ul> <br> '''2.61 Trigger-OR'''<br> <ul> <li> Pinning on DCS-RCU connector changed to match Trigger OR board. </li> <li> Added sm_enable register that is enabled by writing to 0xBF01.</li> <li> Bus data width reduced to 16 bits. The remaining 16 bits are used for SelectMAP interface.</li> <li> SelectMAP interface can be accessed simultaneously as memory mapped interface. </ul> <br> '''2.62 BUSYBOX'''<br> <ul> <li> Equal to v2.61 but with slightly different pinning on dcs-rcu (busy-logic) connector</li> </ul> <br> Known issues in v2.6x:<br> <ul> <li> Minor bug in RCU Master Module. It does not check on mode bit if a new transaction is started on the same clock cycle that the previous is ended.</li> <li> Bug if an error is found in the format of the data block. The next block will not be automatically read if an error condition arises.</li> </ul> As long as the driver is behaving correctly, these bugs will never cause any trouble. They are corrected in the source files, but as for now - a new firmware version will not be built.<br> <br> '''2.7 (03.08.2007)'''<br> <ul> <li> Ethernet Module upgraded to increase speed of Ethernet link as described [http://frodo.nt.fh-koeln.de/~tkrawuts/update_howto/ here]. Please be aware that this upgrade also means updating the Kernel of the board. If this is not done, the Board will not work.</li> <li> Minor bugs mentioned in v2.6x corrected.</li> </ul> '''2.71 (12.09.2007) Trigger-OR'''<br> <ul> <li> Same as v2.61, but inlcuding the upgrades given in v2.7</li> </ul> '''2.72 (12.09.2007) BUSYBOX'''<br> <ul> <li> Same as v2.62, but inlcuding the upgrades given in v2.7</li> </ul> <br> '''2.8 (14.11.2007)'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to:<ul> <li>"11"/"00" Memory mapped mode</li> <li>"01" Flash mode </li> <li>"10" Selectmap mode.</li></ul> The most important is that memory mapped mode is now “11”. This is default state of these lines when the DCS board do not drive the lines during reboot. <li> Removed a register on the reset line (dcs_Ctrl5) to avoid the 80 ns reset pulse whenever the DCS board reboots</li> <li>added a shiftregister on the mode and reset to make sure the lines are stable and asserted at least 8 clks to increase robustness</li> <li> Added register 0xbf02 for setting the system back to old mode settings (by writing 0x01d) for backward compabitility. </ul> '''2.81 (30.11.2007) Trigger-OR'''<br> <ul> <li> Same as v2.71, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.82 (30.11.2007) BUSYBOX'''<br> <ul> <li> Same as v2.72, but inlcuding the upgrades given in v2.8 (where only the reset bug matters in this setup)</li> </ul> '''2.83 (15.05.2008) BUSYBOX'''<br> <ul> <li> Routed ttcrx_rdy out on dcs_ctrl7 (otherwise equal to 2.82)</li> </ul> '''2.84 (08.10.2008) BUSYBOX'''<br> <ul> <li> Added a register on ttcrx_rdy to reduce the load on the net, hence removing the problem with channel A/channel B errors. (otherwise equal to 2.83)</li> </ul> '''2.9 (30.1.2012)'''<br> <ul> <li> Updated udhcpc <li> Updated rcS (udhcpc parameters, ntp timeserver, bootscript execution order) <li> modified nfsmount_all to only mount dcbrw and dcbro <li> added _S05restartreadback.sh, S27enable_ttcrx.sh, S31unsetOldMode.sh, S52startntp.sh to /etc/boot <li> removed S30rcu-conf.sh, S31setoldmode from /etc/boot <li> disabled CONFIG_DEBUG_SLAB in kernel </ul> <br> <br> === Download Section === Specification document:<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.6x.pdf RCU_comm_specification_v2.6x.pdf]<br> [http://web.ift.uib.no/firmware/alme/RCU_comm_specification_v2.8x.pdf RCU_comm_specification_v2.8x.pdf] <br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/messagebuffer/ SVN database] <br><br> <ul> <li>'''Version 2.2: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.2.bin armboot_v2.2.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.2.rar epxa1db_v2.2.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.2.rar Quartus Project] </li> <li>'''Version 2.3: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3.bin armboot_v2.3.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3.rar epxa1db_v2.3.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3.rar Quartus Project] </li> <li>'''Version 2.3 (SelectMap - special version to go with Gert Trögers SelectMap firmware/software): '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.3SelectMap.bin armboot_v2.3SelectMap.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.3SelectMap.sbi epxa1db_v2.3SelectMap.sbi] | [http://web.ift.uib.no/firmware/alme/xhwicapfpgafs.o xhwicapfpgafs.o] | [http://web.ift.uib.no/firmware/alme/xilinx_hwicap.o xilinx_hwicap.o] | [http://web.ift.uib.no/firmware/alme/loop.o loop.o] | [http://web.ift.uib.no/firmware/alme/readme.txt readme.txt] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.3_smap.rar Quartus Project] </li> <li>'''Version 2.4:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.4.bin armboot_v2.4.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.4.rar epxa1db_v2.4.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.4.rar Quartus Project] </li> <li>'''Version 2.5:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.5.bin armboot_v2.5.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.5.rar epxa1db_v2.5.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.5.rar Quartus Project] </li> <li>'''Version 2.6: '''<br> [http://web.ift.uib.no/firmware/alme/armboot_v2.6.bin armboot_v2.6.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.6.rar epxa1db_v2.6.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.6.rar Quartus Project] </li> <li>'''Version 2.61 Trigger-OR:''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.61.bin armboot_v2.61.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.61.sbi epxa1db_v2.61.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.61.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Trigger OR] </li> <li>'''Version 2.62 BUSYBOX: ''' <br> [http://web.ift.uib.no/firmware/alme/armboot_v2.62.bin armboot_v2.62.bin] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.62.sbi epxa1db_v2.62.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.62.rar Quartus Project] | [http://web.ift.uib.no/firmware/alme/virtex_driver.o virtexdriver kernel module] | [http://web.ift.uib.no/firmware/alme/rcS rcS file for Busy Logic] </li> <li>'''Version 2.7: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.7uib_dcs0031.hex hex file for dcs0031] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.7.rar epxa1db_v2.7.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.7.rar Quartus Project] </li> <li>'''Version 2.71 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.71uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.71.rar epxa1db_v2.71.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.71.rar Quartus Project] </li> <li>'''Version 2.72 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.72uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.72.rar epxa1db_v2.72.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.72.rar Quartus Project] </li> <li>'''Version 2.8: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.8uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/dcs_v2.8.zip kernel, armboot, updatescript for DCS upgrade] | [http://web.ift.uib.no/firmware/alme/Recipe_for_dcs_v2.8_actel_v1.4_upgrade.pdf Recipe for TPC DCS/Actel upgrade] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.8.rar epxa1db_v2.8.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_tpc_v2.8.rar Quartus Project] </li> <li>'''Version 2.81 Trigger-OR: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.81uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.81.rar epxa1db_v2.81.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_triggeror_v2.81.rar Quartus Project] </li> <li>'''Version 2.82 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.82uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.82.rar epxa1db_v2.82.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.82.rar Quartus Project] </li> <li>'''Version 2.83 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.83uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.83.rar epxa1db_v2.83.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.83.rar Quartus Project] </li> <li>'''Version 2.84 BUSYBOX: '''<br> [http://web.ift.uib.no/firmware/alme/dcsflash_boardrev164_firmware2.84uib_dcs0100.hex hex file for dcs0100] | [http://web.ift.uib.no/firmware/alme/epxa1db_v2.84.rar epxa1db_v2.84.sbi] | [http://web.ift.uib.no/firmware/alme/dcs1.52_busylogic_v2.84.qar Quartus Project (Archive)] </li> <li>'''Version 2.9: '''<br> [http://web.ift.uib.no/~dominik/files/dcs_fw/dcsflash_boardrev164_firmware2.9uib_dcs0031.hex hex file for dcs0031] | [[Firmware files for boards 30 - 1400]] | [http://web.ift.uib.no/~dominik/files/dcs_fw/rcS rcS file for new udhcpc, boot script order] </li> <br> </ul> ''Please note that the armboot.bin file is not supplied with version 2.7 as the Kernel MUST be updated as well. The hex file can be used together with the [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/remoteupdate4.sh remoteupdate4.sh] script in the following way:'' <br> ./remoteupdate4.sh dcsflash_boardrev164_firmware2.7uib_dcs0031.hex <board IP/name> armboot | kernel<br> ''For detailed instuctions on using the remotesetup look [http://frodo.nt.fh-koeln.de/~tkrawuts/firmware/index.html here]. ''<br><br> ''When using remotesetup one should also upgrade:'' <ul> <li> ''The text-file /etc/version on the DCS board so that the correct FW version is reported on boot up.''</li> <li> ''The text-file /etc/md5sums with the correct checksums. The correct checksums are found on the DCS board like this:'' <ul> <li>''Kernel:'' md5sum /dev/mtd/2</li> <li>''Armboot:'' md5sum /dev/mtd/0</li> </ul> </ul> <br><br> Please note that a different update script has been made for TPC RCU DCS. Contact Dag Toppe Larsen (dagtl at ift.uib.no) for questions. <br><br> The bin file can be used directly to change the firmware of the board. This can be done in the following way:<br> <ol> <li> Log onto DCS board. <li> Remove old firmware: eraseall /dev/mtd/0 <li> Upload new firmware: cat armboot_x.x.bin > /dev/mtd/0 <li> Reboot board </ol> The firmware version is reported when starting the rcu-sh.<br><br> The sbi-file is used when building the complete DCS project. This should only be used by experts. <br><br> The Quartus project needs to be opened with a version of Quartus prior to 4.2, or else the Excalibur device is not supported. <br><br> == DCS board Lattice CPLD-firmware for TPC and PHOS == === Overview === The Lattice CPLD on the DCS board is in charge of controlling the clock distribution as well as the power regulators on the RCU board. A special design has been made by Venelin Angelov at KIP Heidelberg for use by the TPC and PHOS DCS boards. In this design, the default value of the vreg outputs are X"FFFFF7". This value makes the RCU power up together with the DCS board, as well as feeding a 40 MHz system clock to the RCU board. <br><br> To program the CPLD, a Lattice programmer that has the correct pinning to match the DCS board JTAG connector is needed. The ispVM System software is also mandatory. This can be downloaded from the Lattice Homepage. <br> To program it download the xcf file and the jed file from this site. Open the xcf file with ispVM System and make sure the link in the xcf file points to the location of your harddrive where the jed file is found. Then follow the instructions of the ispVM system software. <br><br> === Download Section === Complete Project: [http://web.ift.uib.no/firmware/alme/vreg_2006_04_23.zip vreg_2006_04_23.zip]<br> Programming File: [http://web.ift.uib.no/firmware/alme/vreg.jed vreg.jed]<br> ispVM System Project File: [http://web.ift.uib.no/firmware/alme/vreg.xcf vreg.xcf]<br><br> == RCU Trigger Receiver Module == === Overview === [[Image:TTC_Receiver_schematic_v1-1_final.png|thumb|350px|Sketch of RCU Trigger Receiver v1.1]] Triggers are used to initiate a read out of data in the TPC/PHOS sub-detector. The triggers and associated data are received on the DCS board from the trigger system via an optical cable interface. The receiver of the data is the TTCrx; an ASIC on the DCS board. The TTCrx chip is directly connected to the onboard FPGA on the DCS board. In addition, two lines – the L1Accept trigger and the serial B channel, are routed to the FPGA on the RCU board. The data on the serial B channel is the raw data coming directly from the Trigger System.<br><br> The onboard FPGA on the DCS board cannot be used to receive the trigger data, as it is sensitive to Single Event Functional Errors (SEFIs) because of the radiation environment. If a SEFI occurs in the DCS board FPGA valid events might be lost. <br><br> To prevent this, the Trigger Receiver Module is designed. This is a part of the RCU FPGA firmware, instead of using the internal TTCrx logic for this task. The Trigger Receiver Module decodes serial B messages and L0/L1 triggers. In this way, all sensitive data is decoded and stored in the FPGA of the RCU board, on which measures has been developed to prevent the failures due to radioactive effects (see RCU Auxilliary FPGA).<br><br> In addition, the Trigger Receiver circuit is to be used on the Trigger Busy Logic Board. The purpose of this board is to let the CTP know when the event-buffers on the FEE are full, i.e. that no more triggers can be accepted. The CTP will not send additional triggers as long as the busy signal is asserted. <br><br> To set the busy signal the received event id that is decoded with the Trigger Receiver Module, is compared with the event id that the DRORCs reports to have received. Depending on the size of the buffers, which can be 4 or 8 events, the busy will be asserted if the number of triggers received is 4 or 8 more than the number of events reported to be received by the slowest DRORC.<br><br> === Version === '''v1.0'''<br> <ul> <li> Decoding serial B input</li> <ul> <li> Broadcast messages</li> <li> Individual addressed messages</li> </ul> <li> Hamming decoding of serial B message</li> <ul> <li> Repair and count single bit errors</li> <li> Count other errors</li> </ul> <li> Generation of Level 2 accept, Level 2 reject and RoI trigger</li> <li> Generation of eventcount reset and bunchcount reset from serial B broadcast messages.</li> <li> Counters: level 1 accept, level 2 accept, level 2 reject and RoI triggers.</li> <li> Verification if L2a+L2r = L1a</li> <li> Testmode that simulates arrival of serial B messages.</li> <li> Handling of transmission errors etc.</li> <li> Memory mapped interface.</li> <li> Trigger info outputs for data assembler</li> </ul> <br> '''v1.1'''<br> <ul> <li>Redesigned most parts of the module.</li> <li>Supports both RCU and Trigger Busy Logic Board.</li> <li>Decoding serial B input</li> <ul> <li>Broadcast messages (bunchcount reset, eventcount reset, pre-pulse)</li> <li>Individual addressed messages (L1a, RoI, L2a, L2r)</li> </ul> <li>Decode L1a line to L0 trigger and L1a trigger.</li> <li>Hamming decoding of serial B message.</li> <li>Report, repair and count single bit hamming errors</li> <li>Report and count other errors, including double bit hamming errors, message decoding error and seqeunce validation errors</li> <li>Generation of L0, L1a, L2a and L2r trigger</li> <li>Decoding of RoI is optional and can be enabled in the Control/Status register</li> <li>Status output showing if run is ongoing. (Between vanguard and rearguard trigger.) </li> <li>Counters: Internal bunchcounter, trigger counters, message counters and error counters.</li> <li>Reporting transmission errors etc</li> <li>Reporting timeouts and sequence errors.</li> <li>Memory mapped interface.</li> <ul> <li> RCU Version with 32 bit bidir data-bus.</li> <li> Trigger Busy Logic Version with 16 bit bidir data-bus.</li> </ul> <li>FIFO with header words and event information for data assembly</li> <li>Generic debug-mode with possibility to read out FIFO from DCS board, more debug registers and a simple simulation of arrival of trigger sequences.</li> </ul> <br> '''v1.2 (13.12.2007)'''<br> <ul> <li>Sample serial B and L1 accept line on falling edge.</li> <li>Remake of L1a decode module to simplify it.</li> <li>Remake of Adressed message decoder: <ul> <li>Added FEE reset decoding</li> <li>It is now possible that messages come in between each other (L2H-L2D-L1H-L1D-L2D .. etc)</li> </ul></li> <li>Remake of Sequence Validator module so that the time windows can overlap to the extreme (this was not possible earlier</li> <li>Some modoifications to the Error and infor register</li> <li>Added Phase check module to store in what phase of the sampling clock the trigger arrives</li> <li>Control registers slighlt changed</li> <li>All latencies now given with respect to L0 trigger instead of BC0</li> </ul> <br> '''v 1.21 (29.05.2008)'''<br> <ul> <li>Corrected the version information in the CDH.</li> <li>Bugfix in the phase-check module. The stored phase is no longer cleared when an L2 trigger arrives</li> </ul> <br> '''v 1.22 (30.05.2008)'''<br> <ul> <li>Added input meb_depth and a meb_mask_enable to control register. This will make it possible to constrain the FIFO to store only the number of header as multi event buffers. Any trigger sequences received if MEBs are full are masked completely.</li> </ul> <br> '''v 1.23 (12.06.2008)'''<br> <ul> <li>Removed input meb_depth and a meb_mask_enable to control register. </li> <li>Removed test for RoC = 0 when physics trigger as this was not correct</li> <li>Added input meb_full and ddl_rdy_rx and enable_trigger_input_mask to control register. The enable_trigger_input mask will enable the meb_full_flag or the ddl_rdy_rx flash to mask out any incoming triggers. In addition it will constrain the FIFO to only be able to store 8 events</li> </ul> <br> '''v 1.24 (13.01.2009)'''<br> <ul> <li>Changed the sequence validator so that a sequence can only consist of messages. This will generate a CDH to be stored to the FIFO.<br> This is done based on request since an L1a trigger with wrong latency may cause a L1r sequence and an orphan L1/L2 message. With this fix the latter will generate a sequence (with errors).</li> </ul> <br> '''v 1.3 (11.02.2009)'''<br> <ul> <li>Corrected a bug introuces in v1.24 that lead to the busy timout being worng when a sequence is only a message. </li> <li>Removed ROI decoding (only commented out) because of area constraints on RCU.</li> <li>Added version number in control/status register</li> </ul> <br> '''v 1.4 (24.03.2010)'''<br> <ul> <li>Minor change to sequence validator only. CIT bit is no longer verified against arrival of pre-pulse. (Specified in mail correspondance with Terry Awes 23.03.2010). </li> </ul> <br> '''v 1.5 (17.08.2010)'''<br> <ul> <li>Fix done by Attiq Ur Rehman:<br> There is minor change in the "fifo wrapper":<br> Line #73 new signal cnt_dn<br> Line #91 comparison with "read_counter"<br> Line #170,172,174 check of possible logical conditions<br> This file was used for the RCU firmware (from 10th July and on wards) to fix the Erroneous behavior causing busy condition. </li> </ul> <br> '''v 1.6 (20.01.2012)'''<br> <ul> <li>Single l2 messages does not generate CDH</li> <li>Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register.</li> <li>Cleaned up code and removed commented lines (RoI is now gone)</li> <li>Minor changes to DAQ header error word</li> <li>New output: sync - software trigger decoded from RoC = 0xD</li> </ul> <br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/TTC_receiver_specification_v1-0.pdf Preliminary documentation for Firmware version 1.0] <br> [http://web.ift.uib.no/firmware/alme/RCU_trigger_receiver_v1-0.zip Firmware v 1.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-0.zip Xilinx Project used for test - Firmware v 1.0]<br> [http://web.ift.uib.no/firmware/alme/TTC_receiver_v1-0.bit Xilinx xc2vp7 programming file - Firmware v 1.0]<br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.1.pdf Specification/design document for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1_source_files.rar Firmware v 1.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.1-scripts.rar Firmware v 1.1 - HW scripts. Do files for Questasim and Questasim project file.]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-1.rar Xilinx Project used for test - Firmware v 1.1]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.1.bit Xilinx xc2vp7 programming file - Firmware v 1.1 (debug mode)]<br><br> ''Note 16.8.2007: Please note that there have been minor updates to version 1.1 so the Xilinx project contain a slightly different version than the source files does.<br> The differences are: - Possibility to select what events will be stored in the FIFO in the configuration registers by setting some mask bits<br> - Changed the readout speed of the FIFO so that it is possible to keep the read_enable high and new data will come on each clock cycle.<br> - Added read_counter as an output. This counter shows what word in the header is currently being read out by the FIFO.'' <br><br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.2_updated.pdf Specification/design document for Firmware version 1.2] (Updated 13.05.08) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.2_source_files.rar Firmware v 1.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/Xilinx_project_v1-2.rar Xilinx Project used for test - Firmware v 1.2]<br> [http://web.ift.uib.no/firmware/alme/rcu_trigger_reveiver_v1.2.bit Xilinx xc2vp7 programming file - Firmware v 1.2 (debug mode)]<br><br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.21_source_files.rar Firmware v 1.21 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.22.pdf Specification/design document for Firmware version 1.22] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.22_source_files.rar Firmware v 1.22 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.23.pdf Specification/design document for Firmware version 1.23] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.23_source_files.rar Firmware v 1.23 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.24_source_files.rar Firmware v 1.24 - Only updated sequence validator]. <i>Download version 1.23 and replace sequence_validator with this file.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.3.pdf Specification/design document for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.3_source_files.rar Firmware v 1.3 - VHDL files, including testbench]<br> <br> [http://web.ift.uib.no/firmware/alme/sequence_validator2010-03-24.rar Firmware v 1.4 - sequence_validator.vhd and trigger_receiver_pkg.vhd]. <i>Download version 1.3 and replace the two files.</i> <br> <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.5_source_files.rar Firmware v 1.5 - VHDL files, including testbench]<br> <br> <br> <br> [http://web.ift.uib.no/firmware/alme/Trigger_receiver_requirement_specification_v1.6.pdf Specification/design document for Firmware version 1.6] (Updated 20.01.12) <br> [http://web.ift.uib.no/firmware/alme/trigger_receiver_v1.6_source_files.zip Firmware v 1.6 - VHDL files, including testbench]<br> <br> All source files and more can be downloaded from the [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/trigger_receiver/ SVN database]. <br><br> == RCU DCS Interface Module == === Overview === [[Image:dcs_interface_v0.2.png|thumb|350px|Sketch of RCU DCS Interface v0.2]]The DCS interface is used to have a single interface towards the master module on the DCS board, hence transalating the extarnal asynchrounos bus protocol to a synchronous one internally on the RCU Xilinx.<br><br> One important feature of the DCS board firmware when used together with the RCU is to support three different modes of communication: Normal operation, Flash mode, selectMAP mode. The RCu Xilinx should only be active when in Normal operation, and the DCS interface must make sure that the ports from the Xilinx are not driven when other modes have been set. The DCS interface should ack all addresses except certain adresses that is used in the DCS fw and by the Actel device. <br><br> Since there are two bus masters on the RCU Xilinx – the DCS and the SIU – the DCS interface will make use of a bus request/grant scheme for most of the available registers/memories in the RCU. The only registers that do not need a bus request/grant scheme are the register belonging to the Monitoring and Safety Module, since SIU do not have any access to this. <br><br> === Version === '''v0.1'''<br> <ul><li>First proper version of DCS interface supporting all features given in overview.</li></ul> <br> '''v0.2'''<br> <ul><li>Adapted to match new mode settings of dcs fw v2.8. </li></ul> <br> '''v0.3 (12.02.08)'''<br> <ul> <li>Added seu error line from the Actel as an input. Inverted it aand masked it with mode pins. </li> <li>Added reset registers (0x2000 = global, 0x2001 = fec, 0x2002 = rcu)</li> <li>Changed the register adresses for the grant and interrupt</li> <li>Added we for msm module and separate data input from msm module</li> </ul> <br> === Download Section === [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.2.pdf Specification/design document for Firmware version 0.2] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.2.rar Firmware v 0.2 - VHDL files, including testbench]<br><br> [http://web.ift.uib.no/firmware/alme/dcs_interface_specification_v0.3.pdf Specification/design document for Firmware version 0.3] <br> [http://web.ift.uib.no/firmware/alme/dcs_interface_v0.3.rar Firmware v 0.3 - VHDL files, including testbench]<br><br> == PHOS FEC Board Controller == === Overview === [[Image:PHOS_BC_v3.3.png|thumb|350px|Sketch of PHOS FEC Board Controller v3.3]] The Front End Electronics in PHOS is consisting of one Readout Control Unit (RCU) and 28 Front End Cards (FECs) connected to the RCU via two separate branches. On each FEC an SRAM based FPGA is situated – the Board Controller. Since the Front End Electronics is physically unavailable when PHOS is fully commissioned it must be possible to check the status via software during operation, and quickly respond to any error situation that might occur. <br><br> The purpose of the Board Controller is to read crucial values on the FEC, such as voltages, currents and temperatures. If these values exceed given programmable thresholds the RCU will be notified. If the severity level is considered to be potentially damaging to the board, the RCU will turn off the given FEC. <br><br> The PHOS FEC also includes a high voltage section. A very important functionality of the PHOS Board Controller is to set the bias voltage to the charge sensitive amplifiers located in the high voltage section. This must be done since the amplification of the APDs that are used for readout is varying from part to part. This variation is cancelled out with the setting of the DACs that are controlling the bias voltage. <br><br> This version of the PHOS BC is based on the TPC BC, adding the extra functionality needed for PHOS, and removing some features that are not needed. The basis for the code is the FMD version that is a VHDL implementation of the TPC BC with some modifications. Major changes have been done to this implementation to make the design more robust. <br><br> === Version === '''v3.0 (16.08.2007)'''<br> <ul> <li>Functionally based on PHOS PCM v2.0 (hence the version number)</li> <li>Two command interfaces <ul> <li>ALTRO bus interface <li>Special I2C interface</li> </ul></li> <li>Setting of DACs for bias voltage for High Voltage region</li> <li>Interface to 3 ADCs for verifying voltage and current-levels as well as temperatures.</li> <li>Programmable thresholds for flagging errors in ADC values.</li> <li>Monitoring error inputs from Power Regulators</li> <li>Interrupt line to RCU for errors of a severity level craving urgent measures</li> <li>Possible to set the FEC in standby mode by turning off voltage regulators and not reporting any warnings/errors.</li> <li>Radiation environment precautions: <ul> <li>Hamming coded ADC threshold settings</li> <li>Hamming coded DAC values</li> <li>TMR of configuration/status register</li> </ul></li> <li>Configurable automatic update of DAC</li> <li> Thresholds, ADC values and DAC values stored in memories.</li> </ul> <br> Functional changes from HUST PCM v2.x <ul> <li>Removal of USB communication</li> <li>Removal of Board ID register</li> <li>Hamming encoding and TMR of static registers/memories.</li> <li>Some register remapping.</li> <li>Thresholds and ADC values stored in memories</li> </ul> <br> '''v3.1 (11.09.2007)'''<br> <ul> <li>Added high and low ADC threshold memory</li> <li>Added new module for verifying ADC values</li> <li>Remapped registers.</li> <li>Configurable number of times (1-3) of same threshold error before interrupt is flagged</li> <li>Added two registers to decide if adc values will be treated as current or voltages.</li> <li>Continously reading ADC not default on.</li> <li>Removed the error testing for unlegal adresses (all adresses are ok, but will not return anything if not defined.)</li> <li>Added an unlock register to make it possible to overwrite certain status registers for debug purposes</li> <li>Changed default state of Slow Control Slave dout from 0 to 1 (Bugfix introduced in 3.0).</li> <li>Bugfix of DAC interface in case of hamming error in last channel of each dac</li> </ul> <br> '''v3.2 (03.10.2007)'''<br> <ul> <li>Problem with Slow Control Communication attemped solved by making the slave more robust: <ul> <li>The slow control now decodes all info on the I2C bus no matter if the card address is correct or not. This is done to make the slow control busy hence masking it for any fake start conditions on the bus. The sda_out line and the internal we signal is masked with a card address ok signal.</li> <li>Added timeout counters for Slow Control Transactor and Receiver</li> <li>Rewrote state machine in I2C Slave to reduce the amount of combinatorics.</li> <li>Added sda_out line to csr 3 register for debug</li> </ul></li> <li>Rewrote state machines in ADC interface to reduce the amount of combinatorics.</li> </ul> <br> '''v3.3 (17.10.2007)'''<br> <ul> <li>Included support for Sparse Readout: <ul> <li>Exact copy of TPC version with a minor change to account for the less ALTROs in PHOS and the special ALTRO addressing of PHOS (0, 2, 3 & 4).</li> <li>Hitmap transmitted by the use of dstb that is a gated version of the readout clock.</li> <li>Added the needed functionality on the driver module to support the BC being ALTRO bus master.</li> <li>Added the needed registers adresses for Sparse Readout. Exact copy of TPC version</li> <li>Please note that this has not been verified properely since there are no support for it in the testbench environment nor the hw environment</li> </ul></li> <li>Rewrote ALTRO interface to one single module with the aim of making it more robust.</li> <li>Minor change in driver to make ppr simulation possible</li> <li>Added another timeout counter for the Slow Control Module and made a count of timeout conditions available in the register map</li> <li>Added a debug register with information on the state of the sda line and test_mg input. </li> </ul> <br> '''v3.4 (31.10.2007)'''<br> <ul> <li>Added debug counters and registers in the ALTRO interface module: <ul> <li>Counters for number of received strobes, and number of generated acks.</li> <li>Information stored concerning the last acked address, and last address not acked.</li> </ul> </li> <li>Added Metastability Filter on all control signals and address on the ALTRO Bus to make it even more robust.</li> </ul> ''The problem with the occasional timeout on the ALTRO bus is still present, but testing has shown the the time-out occurs when the Board Controller receives not valid adresses (for some reason). This proves that with a high certainty the problem is not related to the Board Controller.'' <br><br> '''v3.5 (30.03.2008)'''<br> <ul> <li>Added registers on the GTL bus drivers to remove the possibility of glitches on the drivers</li> <li>Changed start condition of the readout command detect state machine to make it behave better in ppr simulations</li> <li>Removed debug counters and metastabilityfilter on ALTRO if (but kept information concverning lasted acked and last not acked transaction)</li> </ul> <br><br> '''v3.6 (21.05.2013)'''<br> <ul> <li>Redesign of the Slow Control interface. SCLK frequency should be 2.5 MHz (RCU reg 0x800C = 0x1). </li> <li>Bugfix of Sparse Readout. Added Debug functionality for low level test of Sparse readout.</li> </ul> === Download Section === [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_specification.pdf Specification/design documentation for Firmware version 3.0] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_source.rar Firmware v 3.0 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_Quartus_project.rar Quartus Project - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_programming_files.rar Programming files - Firmware v 3.0]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.0_scripts.rar Scripts used for testing - Firmware v 3.0]<br> ''Please note that the scripts used for testing is based on the FEC placed at branch A, slot 9. The scripts are not commented so a bit of manual decoding can be needed by the user.'' <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_specification.pdf Specification/design documentation for Firmware version 3.1] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_source.rar Firmware v 3.1 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_Quartus_project.rar Quartus Project - Firmware v 3.1]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.1_programming_files.rar Programming files - Firmware v 3.1]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_specification.pdf Specification/design documentation for Firmware version 3.2] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_source.rar Firmware v 3.2 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_Quartus_project.rar Quartus Project - Firmware v 3.2]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.2_programming_files.rar Programming files - Firmware v 3.2]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_specification.pdf Specification/design documentation for Firmware version 3.3] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_source.rar Firmware v 3.3 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_Quartus_project.rar Quartus Project - Firmware v 3.3]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.3_programming_files.rar Programming files - Firmware v 3.3]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_specification.pdf Specification/design documentation for Firmware version 3.4] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_source.rar Firmware v 3.4 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_Quartus_project.rar Quartus Project - Firmware v 3.4]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.4_programming_files.rar Programming files - Firmware v 3.4]<br> <br><br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_specification.pdf Specification/design documentation for Firmware version 3.5] <br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_source.rar Firmware v 3.5 - VHDL files, including testbench]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_Quartus_project.rar Quartus Project - Firmware v 3.5]<br> [http://web.ift.uib.no/firmware/alme/phos_bc_v3.5_programming_files.rar Programming files - Firmware v 3.5]<br> <br><br> [http://web.ift.uib.no/~alme/wiki/phos_bc_v3.6_specification.pdf Specification/design documentation for Firmware version 3.6] <br> [http://web.ift.uib.no/~alme/wiki/phos_bc_v3.6_source.zip Firmware v 3.6 - VHDL files, including testbench]<br> [http://web.ift.uib.no/~alme/wiki/phos_bc_v3.6_Quartus_project.zip Quartus Project - Firmware v 3.6]<br> [http://web.ift.uib.no/~alme/wiki/phos_bc_v3.6_programming_files.zip Programming files - Firmware v 3.6]<br> <br> [http://web.ift.uib.no/~alme/wiki/phos_bc_v3.6_programming_user_guide.pdf Programming User Guise for Firmware version 3.6] <br> [http://web.ift.uib.no/~alme/wiki/12.0_178_programmer_windows.exe Altera Programmer v12.0] <br> [http://web.ift.uib.no/~alme/wiki/ug_usb_blstr.pdf Altera USB Blaster User Guide]<br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/phos_bc/ SVN database] <br> <br> == RCU Auxilliary FPGA Firmware for TPC and PHOS == === Overview === [[Image:actel_fw1-3.png|thumb|350px|Schematic Overview of RCU Auxilliary FPGA firmware v1.3 and v1.4]] Any SRAM based FPGA will experience errors in the configuration memory when irradiated with a sufficient large dose. These errors are called single event upsets, and the Xilinx FPGA on the RCU board has the the possibility to reload part of or the complete configuration memory without interrupting operation. The Auxiliary FPGA on the RCU board is in charge of the reconfiguration scheme of the Xilinx FPGA. The reconfiguration is important to prevent the errors in the configuration memory of the Xilinx to have a negative effect on the operation of the data readout chain. <br><br> To deal with this task, the firmware on the Aux FPGA needs to be simple and efficient, as general as possible and most importantly; 100% working from the day of installation. With this in mind, as much workload as possible is handed over to the DCS board, making the operation of the firmware a bit more tedious, but much more configurable. <br><br> === Updating the Actel Firmware === [[Image:FlashProLite.jpg|thumb|left|200px|Actel FlashPro Lite]] The only possible option to update the Actel Firmware is by using the JTAG connector on the board and the FlashPro Lite programmer, together with the [http://www.actel.com/custsup/updates/flashpro/index.html flashpro software tool]. Note that version 9.0 gives errors when trying to program the FPGA. [ftp://ftp.actel.com/downloads/flashpro/FlashPro86.zip Version 8.6] is the last version that works for the Actel on the RCU.<br> Download the correct version of stp file found on the download section, and start a new project in the flashpro software. Select the stp-file and choose action "program". Wait for a couple of minutes and the Actel should be updated. This can be verified by reading the version-number register. <br><br><br><br><br> === Updating The RCU Flash Device === When one cannot use rcu-sh to access registers after re-powering the RCU board there is no design for the Xilinx device stored on the RCU Board Flash Device. When powering up the Actel device will immediately start to try and configure the RCU Xilinx. If there are no files in the Flash Device this will fail and the Xilinx will remain braindead.<br> <br> To configure the flash device you will need a recipe, rcuflashprog tool for upgrading the flash Contents, and the bit file you want to use. Please download the first two here: "User manual for Firmware version 1.3" and "rcuflashprog.rar". The recipe is found in the usermanual under chapter 5.1.1. Please be aware that you should NOT choose to enable scrubbing. (Read the full documentation if you are curious what this is)<br><br> The rcuflashprog tool is available with configuration files in the rcuflashprog.rar package. This should be copied to a location on the DCS board (or on a mounted network share preferably) and the rcuflashprog file itself should be executable. The bit file for the Xilinx is found at: [http://ep-ed-alice-tpc.web.cern.ch/ep-ed-alice-tpc/firmware.htm CERN EP-ED ALICE TPC]. <br><br> Be aware of the following <ul> <li>There is a small bug in the DCS interface of the RCU Xilinx firmware of the bitfiles given above that prevents the rcuflashprog tool to work. If you then want to update the Flash Device with a new Xilinx design, you must do the following before you do as described in the manual:<br> <i> rcu-sh w 0xb112 0xa #Disables autoconfiguration from Flash<br> rcu-sh w 0xb002 0x1 #Erases the content on the Xilinx</i></li> <li>If you have have problems with rcuflashprog or rcu-sh are being stalled during or after programming, opening up a new window and running "rcu-sh driver reset" would help. There is a small bug in the rcuflashprog that might stall the driver sometimes.</li> <li>Before running rcuflashprog you need to be sure that the driver is set to mem mapped mode "rcu-sh sm d" or rcu-sh flash d" depending on the mode it is in.</li> <br> === Version History === '''v1.0'''<br> <ul> <li>Working revision of rcu CPLD firmware.</li> <li>supported in mem mapped mode:</li> <ul> <li> read flash</li> <li> write flash</li> <li> erase complete flash</li> <li> erase sector</li> <li> verify flash</li> <li> init configuration</li> </ul> <li> direct selctmap mode tested and verified</li> <li>direct flash mode not tested.</li> </ul> <br> '''v1.1'''<br> <ul> <li> Bug fix in direct flash mode - tested and verified working</li> <li> Version register added. address = hB200 (b8'Majornumber & b8'Minornumber)</li> <li> Rearranged Xilinx programming to handle 16 bits words instead of 32 bit words as flash reads only 16 bits and speeded up the process</li> <li> Read of Xilinx selectmap interface is verified working using Mem mapped interface. </li> <li> Verify Flash method removed</li> <li> Status register updated with more status/error information. </li> <li> If circuit comes into error condition, then everything is halted until error condition is cleared. (0xb000 = 0x0)</li> <li> Fixed a bug in the mem mapped interface that made the circuit hang after a "no target answer" transaction.</li> <li> Added continously scrubbing and abort command.</li> </ul><br> Known issues in v1.1:<br> <ul> <li> After doing a scrubbing (single or continously) it is not possible to execute selectmap commands that sends data from the DCS board. Scrubbing command or init config command is not a problem. The Selectmap interface on the Xilinx seems to go into an error state where it hangs. When this error has occured (status register shows 0x4480), the only option is to do a power cycle of the RCU. </li> </ul> <br> '''v1.2'''<br> <ul> <li> Made both DCS control over Flash interface and Selectmap interface generic.</li> <li> Init config supported</li> <li> Scrubbing of complete configuration supported </li> <ul> <li> single</li> <li> continous until abort</li> <li> continous # number of cycles</li> </ul> <li> Readback frame by frame verification and correcting supported</li> <ul> <li> Single step. One frame at the time</li> <li> Continous until abort. Runs complete cycles.</li> <li> Continous # number of times. Runs complete cycles.</li> </ul> <li> Counters for Number of Readback Verification errors and number of cycles added.</li> <li> Register for frame with last RB error added. (As given by the sequence the frames are stored in the flash)</li> <li> Register for frame being verified added. (As given by the sequence the frames are stored in the flash.)</li> <li> Status register re-arranged</li> <li> Error register added</li> <li> Command register re-arranged</li> <ul> <li> Clear error and clear status added.</li> <li> Added Selectmap Command register</li> <li> Added Flash Command register</li> </ul> <li> Flash interface (and DCS control) on Actel removed due to space limitations. Can only read now. DCS does the rest.</li> <li> Removed delay when in between scrub cycles</li> </ul><br> Known issues v1.2:<br> <ul> <li> The RAM parity error will always be asserted on power up, as the memories then is in an unknown state. Doing a write from the DCS board to all memory locations and then send a clr_error command will clear the error.</li> <li> Init config with one specific programming file has been seen to fail (all others tested has worked). The reason is that the design does not run the startup sequence for a sufficient amount of clock cycles. The Xilinx is programmed but the ports have not been set to an operative mode. There are two ways of going around this problem - and it will work as normal : (1) Increase the stop address in the Flash at 50 addresses or so beyond what is calculated - this will make the clock toggle sufficient amount of times. (2) Simply to do an Xilinx abort command after programming (w 0xb002 0x10).</li> <li> Scrubbing and Frame by frame reconfiguration is dependent on the version of the Xilinx ISE the original bit file is generated with. It has been verified working with one given Xilinx design while failing with a different Xilinx design. It seems that there are some bugs in some versions of Xilinx ISE concerning readback and reconfiguration. Investigations are onegoing.</li> </ul> <br> '''v1.3'''<br> <ul> <li> Fixed critical timing issues when doing frame by frame read-back verification</li> <ul> <li> Cleaned up state machine in Configuration Controller module</li> <li> Added look up tables and pipelined the readback error counter</li> <li> Synchronized the input control lines for the selectmap bus.</li> <li> Relaxed the timing on the selectmap interface</li> <li> A bit slower operation – but timing is now good.</li> </ul> <li> Removed register for reading the last address being written to.</li> <li> Changed reset register to 0xb003</li> <li> Fixed a bug when clearing error register</li> <li> Set continuous scrubbing to read pointer between scrub cycles to refresh registers.</li> <li> The Memories are not in the data-path from the Flash Device to the Selectmap Bus anymore – they are only readable from the DCS board.</li> <li> Added power up detection module that start initial configuration</li> <li> Added stop code register for stopping power up detection module from trying to reconfigure. </li> <li> Added address generator module to save area.</li> <li> Added new generic variable to select type of flash device (BB or BT)</li> <li> Added new memory mapped interface module without support for Flash Interface on Actel (selected by generics)</li> <li> Added synchronizers for the control lines of the Flash Device in direct Flash mode to deal with timing issues. </li> <li> Added f_rynby line to DCS board in direct Flash mode</li> <li> Added output seu_error on dcs_ctrl3 in normal operation mode.</li> </ul><br> Known issues in v1.3:<br> <ul> <li> The RAM parity error can be asserted if reading a memory location that hasn't been written to as the memory in the Actel will come up in an unknown state. Send a clr_error command will clear the error.</li> <li> When using the Active Partial Reconfiguration file as generated by ISE software, NOOPs must be manually added at the end of the file because of a bug in ISE (v8.2).</li> </ul> <br> '''v1.4'''<br> <ul> <li>Bugfix concerning the mode settings. The error lead the Actel to go into selectmap mode when rebooting the DCS board. This also lead the prog_b line to go low long enough to sometimes erase the Xilinx. The mode settings has been changed to: <ul> <li>"11"/"00" Memory mapped mode </li> <li>"01" Flash mode</li> <li>"10" Selectmap mode.</li> </ul> The most important is that memory mapped mode is now "11". This is default state of these lines when the DCS board do not drive the lines during reboot.</li> <li>The SEU_error flag is inverted so that default state is high. </li> <li>Extra robustness has been added to reset line so that the reset must be low for at least 125 ns for the Actel to reset. This is done to make sure glitches do not reset the Actel.</li> <li>Corrected a bug that made the scrubbing counter in continuous scubbing mode increment by 2, instead of 1.</li> </ul> <br><br> === DCS Software Tools for operating the Actel === Three software tools has been developed by Dominik Fehlker (dfehlker at HTWM.De) for operating the Actel Firmware and the onboard Flash Memory of the RCU. These tools are small command-line tools that does different tasks: <br> <ol> <li> '''framegen''' - This tool generates all the frames that shall be stored on the RCU flash and be used for comparison when doing frame by frame reconfiguration. The tool uses a frames.txt configuration file for selecting which frames to generate, and for each frame three files are created: raw frame file, write frame file (raw file including write header and footer) and read frame file (raw file including read header and footer).</li> <li> '''framever''' - This tool making use of step by step frame reconfiguration and is used as a DCS check on the number of errors in the frames, writing an error log that is more detailed than what the actel FW is capable of.</li> <li> '''rcuflashprog''' - This tool is used to program the Flash on the RCU board with the configuration files for the Xilinx. It reads a configuration file to state what will be programmed to where on the flash.</li> </ol><br> Detailed instructions on how to use the tools is found in a README file in the tar-archives. The tools should be run on a mounted folder on the DCS board. These tools will eventually be integrated in the FEE server.<br><br> More information on how to use frame by frame reconfiguration to be added. <br><br> Updates of these tools will come in the near future.<br><br> === Download Section === [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-1.pdf Preliminary documentation for Firmware version 1.1] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-1.stp Firmware v 1.1 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-2.pdf Preliminary documentation for Firmware version 1.2] <br> [http://web.ift.uib.no/firmware/alme/actel_v1-2.stp Firmware v 1.2 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-3.pdf Preliminary documentation for Firmware version 1.3]<i>(Updated 8. Nov 2006)</i><br> [http://web.ift.uib.no/firmware/alme/actel_v1-3.stp Firmware v 1.3 programming file] <br><br> [http://web.ift.uib.no/firmware/alme/Actel_usermanual_v1-3.pdf User manual for Firmware version 1.3 (and 1.4)] <br> [http://web.ift.uib.no/firmware/alme/Actel_specification_v1-4.pdf Preliminary documentation for Firmware version 1.4]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4_testplan.pdf Functional Test report for Firmware version 1.4 (also included in the documentation)]<br> [http://web.ift.uib.no/firmware/alme/actel_v1-4.stp Firmware v 1.4 programming file] <br><br> Source files: [http://web.ift.uib.no/kjekscgi-bin/viewvc.cgi/alice-fw/trunk/rcu_cpld/ CVS database] <br><br> For assosiated information concerning software and software tool download section, go to: [[The Actel software device in the FeeServer CE]] [[Category:Alice]] [[Category:Mikroelektronikk]] 78222b1944325e6043dcaef0f9a39e37bc9802e5 Coming to CERN 0 203 1835 1792 2013-05-27T08:46:40Z Ave082 33 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23, 28 or 57 to Blandonnet, and then change to the tram 18 "CERN" or Y "Val-Thoiry". Check [http://www.tpg.ch tpg.ch] for the timetable. To get to the bus you go left and into the area leading to the trains. Take the escalator to the second floor and the bus stop is right outside. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. *CERN account. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 3f42195a1e9fdc0b5dc7bec3d17298acdc398a03 Teknisk hjelp 0 279 1836 1139 2013-05-28T16:18:26Z Ave082 33 wikitext text/x-wiki [[SSH innlogging]] Hvordan logge inn med ssh fra remote Windows-PC [[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[Xming]] Hvordan bruke Xming for å logge inn fra remote Windows-PC [[http://www.msc.rl.ac.uk/europractice/software/mentor.html Europractice Mentor Graphics Software Overview]] [[http://www.msc.rl.ac.uk/europractice/software/cadence.html Europractice Cadence Software Overview]] [[Cadence]] Hvordan installere Cadence [[Category:Mikroelektronikk]] 28b9c46db1b0ccec12eb5eeba1711c2a828e116e Cadence Virtuoso setup 0 415 1837 2013-05-28T16:32:30Z Ave082 33 Created page with " == update install manager == cd /prog/cadence/ * mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install mana..." wikitext text/x-wiki == update install manager == cd /prog/cadence/ * mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh 4ad78d838bb50f3ede35272bad4b5836e4de3133 1838 1837 2013-05-28T16:59:18Z Ave082 33 wikitext text/x-wiki == update install manager == cd /prog/cadence/ * mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh == configure install manager == preferences -> directories Set default install directory to /prog/cadence == install/update program with install manager == Press the icon which has the text "local directory/media install" Select browse and navigate to the directory containing the install files and select the CDROM1 foleder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == -- INCISIVE -- When doing a full install, INCISIVE needs to be installed first as it is required by IC. -- ASSURA -- There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. 28bba9af9524e12cc64f12fea14534e52ab1b5dd 1839 1838 2013-05-29T13:55:43Z Ave082 33 wikitext text/x-wiki == update install manager == cd /prog/cadence/ * mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories Set default install directory to /prog/cadence == install/update program with install manager == Press the icon which has the text "local directory/media install" Select browse and navigate to the directory containing the install files and select the CDROM1 foleder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. Select the correct path to install to, keep the existing naming convention. If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. If a window opens which asks about configuring the license server, press n. When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == -- INCISIVE -- When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. -- ASSURA -- There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. -- ALTOS -- Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. 9d47227df8e5f18ca37157db0bf1951d387976ed 1840 1839 2013-06-06T12:50:55Z Ave082 33 wikitext text/x-wiki == update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ * mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories Set default install directory to /prog/cadence == install/update program with install manager == For new installs, follow the install Press the icon which has the text "local directory/media install" Select browse and navigate to the directory containing the install files and select the CDROM1 foleder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. Select the correct path to install to, keep the existing naming convention. If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. If a window opens which asks about configuring the license server, press n. When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification be5243616df37aed82871b859d70e4c1715b2efc 1863 1840 2013-07-19T08:24:26Z Ave082 33 wikitext text/x-wiki For complete system install please follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. == update install manager == Always update install manager if a newer exists or else installations may fail. <source> cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION </source> == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories Set default install directory to /prog/cadence == install/update program with install manager == For new installs, follow the install Press the icon which has the text "local directory/media install" Select browse and navigate to the directory containing the install files and select the CDROM1 foleder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. Select the correct path to install to, keep the existing naming convention. If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. If a window opens which asks about configuring the license server, press n. When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification 0873d3e874b0b0a6d2b5a3896717ae337b6de3be 1864 1863 2013-07-19T08:29:37Z Ave082 33 wikitext text/x-wiki For complete system install please follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. == update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories Set default install directory to /prog/cadence == install/update program with install manager == For new installs, follow the install Press the icon which has the text "local directory/media install" Select browse and navigate to the directory containing the install files and select the CDROM1 foleder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. Select the correct path to install to, keep the existing naming convention. If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. If a window opens which asks about configuring the license server, press n. When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification d211c84489f3f14b93f86dc03e797f2eb184c60f 1865 1864 2013-07-19T08:31:58Z Ave082 33 wikitext text/x-wiki For complete system install please follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. == update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install Press the icon which has the text "local directory/media install" Select browse and navigate to the directory containing the install files and select the CDROM1 foleder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. Select the correct path to install to, keep the existing naming convention. If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. If a window opens which asks about configuring the license server, press n. When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification 99d5c86db51154e0181896a3f6424f960016de93 1867 1865 2013-07-19T08:37:05Z Ave082 33 wikitext text/x-wiki == update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. :Press the icon which has the text "local directory/media install" :Select browse and navigate to the directory containing the install files and select the CDROM1 folder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 :You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. Select the correct path to install to, keep the existing naming convention. If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. If a window opens which asks about configuring the license server, press n. When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification f34161fd4710707b8b3b2285df72a0822aca3ebe 1868 1867 2013-07-19T08:41:33Z Ave082 33 wikitext text/x-wiki == update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. Check that there isn't a slash at the end of the path. Program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification 7398cf7ab4c1da48a445e956b216a886c2f5cc0d 1869 1868 2013-07-19T08:45:17Z Ave082 33 wikitext text/x-wiki == update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification 636844a7ed01b78011feb88646f4a996a1dd0f65 1870 1869 2013-07-19T10:43:51Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 *Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh 6374dd2aae01bceeaf530e01e61bb51f349b2e47 1871 1870 2013-07-19T13:53:23Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh == Scripts == ===Checksys.sh== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt #read -p "Press enter to continue" fi done done </script> 9e6d666aad34425a23fab3109a09bc981748133c 1872 1871 2013-07-19T13:55:53Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh == Scripts == ===Checksys.sh== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> 1cb1e3e2cfdfa486207efdae5cb09197c3af6d85 SmartFusion2 0 416 1842 2013-06-12T16:17:45Z Ave082 33 Created page with "=Download= Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN =Get a free 1 year license= Goto: http://www.actel.com/Portal/DPortal.aspx and c..." wikitext text/x-wiki =Download= Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN =Get a free 1 year license= Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ==Find out your Disk Serial Number.= Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. =Install= Start LiberoSoCv11 - Select Install Libero SoC (not the SA) - Select to install ALL - Synplify Pro - SoftConsole - Synphony - Identify - ModelSim - Fusion - Igloo, Igloo nano - Igloo Plus - Iglooe - ProAsic3 - ProAsic3E - ProAsic3L - SmartFusion - SmartFusion2 Apply and install license if you not already have a license installed. 4eb7a4204ddac6ee8b44fcbda76bec24acbae1a2 1843 1842 2013-06-12T16:18:32Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ==Find out your Disk Serial Number== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. ==Install== Start LiberoSoCv11 - Select Install Libero SoC (not the SA) - Select to install ALL - Synplify Pro - SoftConsole - Synphony - Identify - ModelSim - Fusion - Igloo, Igloo nano - Igloo Plus - Iglooe - ProAsic3 - ProAsic3E - ProAsic3L - SmartFusion - SmartFusion2 Apply and install license if you not already have a license installed. 1bbf814d9787e13e725b253be62c956f74561b08 1844 1843 2013-06-12T16:19:04Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ==Find out your Disk Serial Number== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL - Synplify Pro - SoftConsole - Synphony - Identify - ModelSim - Fusion - Igloo, Igloo nano - Igloo Plus - Iglooe - ProAsic3 - ProAsic3E - ProAsic3L - SmartFusion - SmartFusion2 Apply and install license if you not already have a license installed. 0279d3cc22ac1ab8ddab7d4660b4ae7152c47367 1845 1844 2013-06-12T16:19:26Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ==Find out your Disk Serial Number== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro - SoftConsole - Synphony - Identify - ModelSim - Fusion - Igloo, Igloo nano - Igloo Plus - Iglooe - ProAsic3 - ProAsic3E - ProAsic3L - SmartFusion - SmartFusion2 Apply and install license if you not already have a license installed. 8b1fa154a54f98b8fab26ecc67f84f373cb6b2e1 1846 1845 2013-06-12T16:20:43Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ==Find out your Disk Serial Number== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. b50d21df8fa37fc1e476adc6ea8804d670189c9a 1847 1846 2013-06-12T16:22:13Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ==Find out your Disk Serial Number== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. daf536fe57c7c918a66e60db3e5331235469c235 1848 1847 2013-06-12T16:22:29Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. 55e58e230e178020bc2a7665f6ba410f6c9a99c6 1849 1848 2013-06-12T16:22:59Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. 3c748541a38071714a971062badc3bbff5a867fb 1850 1849 2013-06-12T16:25:23Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. 9c9f2994be3724dea5661dd838dcef3b139f8bee 1851 1850 2013-06-13T08:55:34Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 1: SF2 USB== 2653bec7667cc9e7e9cb0c40b7f96490898464f9 1852 1851 2013-06-13T08:59:30Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Add tips or corrections for tutorials below. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 1: SF2 USB== bdff98810928c6cac3b9b7ca49d561d68483160e 1853 1852 2013-06-13T09:14:37Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Add tips or corrections for tutorials below. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == If you forget to check the box marked "Monitor FPGA fabric PLL Lock" in step 2 point 13 the output data from the SF2 over RS232 data will be garbled. ==Tutorial 1: SF2 USB== 6d40e040a724416b8576fa5a148a396104c345ef 1854 1853 2013-06-13T09:16:58Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. Add tips or corrections for tutorials below. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == If you forget to check the box marked "Monitor FPGA fabric PLL Lock" in step 2 point 13 the output data from the SF2 over RS232 data will be garbled. ==Tutorial 1: SF2 USB== 5368bc197bbf9d470b38a6b14226360cdcc67cab 1855 1854 2013-06-13T09:17:37Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == If you forget to check the box marked "Monitor FPGA fabric PLL Lock" in step 2 point 13 the output data from the SF2 over RS232 data will be garbled. ==Tutorial 1: SF2 USB== 4f30b1bb6753d1b578a9b530150433796f72c01b 1856 1855 2013-06-13T09:24:21Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == [[Media:Cortex_M3_lab_guide_v1.1_AV.docx|DOC]] If you forget to check the box marked "Monitor FPGA fabric PLL Lock" in step 2 point 13 the output data from the SF2 over RS232 data will be garbled. ==Tutorial 1: SF2 USB== 12a98a34d3504c0763bf6bbe195f49e4961bb953 1857 1856 2013-06-13T09:27:30Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== [[Media:Fabric_lab_guide_v1.1_AV.docx|Tutorial 1]] ==Tutorial 2: SF2 ARM Cortex-M3 == [[Media:Cortex_M3_lab_guide_v1.1_AV.docx|Tutorial 2]] If you forget to check the box marked "Monitor FPGA fabric PLL Lock" in step 2 point 13 the output data from the SF2 over RS232 data will be garbled. ==Tutorial 1: SF2 USB== [[Media:USB_lab_guide_v1.1_AV.docx|Tutorial 3]] 6ae3e0764195bc9979750a0fef0be89d1e030bf0 1858 1857 2013-06-13T12:50:22Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver2 in the folder Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. ef28ab627267b469e9a5013becae50e17eb039f3 1859 1858 2013-06-13T13:40:27Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. a2bf4bd368a2c0c67650be5ffb0507fcdbe6ac98 1860 1859 2013-06-27T09:00:34Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= Rightclick in the library pan of Questasim and choose new->Library. Choose "A map to an existing library". Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. 0a9549cfe0ed706724a93ab2adf4d94b3dde9623 1861 1860 2013-06-27T09:01:17Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= * Rightclick in the library pan of Questasim and choose new->Library. * Choose "A map to an existing library". * Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. f8785c7c4c4c048df4a47ecc4c2ce88a0d8d8368 1862 1861 2013-06-27T09:03:35Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= * Rightclick in the library pan of Questasim and choose new->Library. * Choose "A map to an existing library". * Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. * Include the library in the files where you need SF2 cores The same applies for other actel devices. e8b9700e311a4e52ccfedc4b3453396a64a0ccdf Template:- 10 417 1866 2013-07-19T08:32:46Z Ave082 33 Created page with "<br style="clear:both;" />" wikitext text/x-wiki <br style="clear:both;" /> c9baeab206eda22ea64542e99a8f6e2258903c2a Cadence Virtuoso setup 0 415 1873 1872 2013-07-19T13:56:14Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> 08d5316263eac2bbc75f7a5996a7f5779e6515ae 1874 1873 2013-07-19T14:17:22Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> 0e115c55045af00aac846a9a180eb08ec749a774 1875 1874 2013-07-19T14:18:15Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> 8e45b82022dda30d02a77d81fa8c955d724a504b 1876 1875 2013-07-19T14:59:16Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </scipt> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <script lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </script> Then check the version in the aformentioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> ea4bec51b405035a16c6739465e8a0e603c98e72 1877 1876 2013-07-19T14:59:53Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </script> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <script lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </script> Then check the version in the aformentioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> ef46ab762ea0c2d826a3841f9c58f771b1b0d4f1 1878 1877 2013-07-19T15:00:42Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aformentioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> bd98fd8ae32c6c7ee4c99afa74b7fc9146f1ce78 1879 1878 2013-07-19T15:10:18Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aformentioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf rm ./problems.txt # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> dff3dd10ebd9e548f95dfcabfc2a6dedc52354e2 1880 1879 2013-07-19T15:15:02Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aformentioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf rm ./problems.txt # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> c8327926e2a11928b40c7f7a8b9219005ec8bf8e 1892 1880 2013-09-03T15:41:09Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Include the line setenv AMS_DIR /path/to/amslib somewhere. Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aformentioned folder and the text file inside it. To add other libraries to cadence edit the /cdsdir/IC_6.1xxx/share/cdssetup/cds.lib and add the line SOFTINCLUDE $AMS_DIR/artist/HK_C35/cds.lib or other libraries that are needed. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf rm ./problems.txt # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> f9539be762a02818c09f5ddad8007e15a833e18a 1893 1892 2013-09-03T15:42:11Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Include the line setenv AMS_DIR /path/to/amslib somewhere. Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aformentioned folder and the text file inside it. To add other libraries to cadence edit the /cdsdir/IC_6.1xxx/share/cdssetup/cds.lib and add the line SOFTINCLUDE $AMS_DIR/artist/HK_C35/cds.lib or other libraries that are needed. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf rm ./problems.txt # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> 1cd1765cb9b3ddffdaece9cbc1871738288caf88 1894 1893 2013-09-04T11:37:45Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar xvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 615 is for compability with IC5 (CDB), install folder is ASSURA_*_OA. 5141 is for use with IC6 (OA), install folder is ASSURA_*_CDB. === ALTOS === Altos doesn't use install manager and isn't caught by the untar program as it is a .tgz file. === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "production_cds_20xx_linux.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual foldernames are correct. *24 - Set correct license server at line *27 - Set top folder to /prog/candece *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *89+91 - Change tools to tools.lnx86 (check folder) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIV path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $incisiv_dir alias ams_cds_start 'ams_cds -64 -tech c35b4 -nologo' Save file as production_cds_20xx_linux_mod.csh csh chmod +x /prog/cadence/production_cds_20xx_linux_mod.csh source /prog/cadence/production_cds_20xx_linux_mod.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aformentioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2013 # if [ -z "$CDS_TOP" ] then echo "Please run environment script first" exit 1 fi # Add new modules if needed cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE $CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) # CTOS_ROOT doesn't seem to have a checksysconf rm ./problems.txt # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo $result if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done </script> == Linux packages that might be required == *openmotif *tk *ksh 93ab0fe54805b3cb111dc387d8bbe621b41df278 Coming to CERN 0 203 1881 1835 2013-07-31T13:10:53Z Ave082 33 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23, 28 or 57 to Blandonnet (stops under the bridge, go up and to the right in the middle of the stairs), and then change to the tram 18 "CERN" or Y "Val-Thoiry". Check [http://www.tpg.ch tpg.ch] for the timetable. Get off at the stop opposite the large wooden globe. To get to the busses from the airport you go left and into the area leading to the trains. Take the escalator to the second floor and the bus stop is right outside. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == To get into CERN if you don't have anybody to pick you up it is usually easiest to show your CERN contract to clerk at the visitors office, [http://building.web.cern.ch/map/building?bno=31 map]. * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, [http://building.web.cern.ch/map/building?bno=561 map]. *CERN drivings license, if you want to use the Bergen car. Bring your drivings license, as they need to scan it in. To get the license, you need security course, level 1+2, see below. When the secretariat have made the request, you will receive an email that you should sign the request. This you do at [http://edh.cern.ch edh.cern.ch], and for this you need a password, as described below. The car is usually located outside the Bergen Office (plate number GE 603658, car number 3948), but could also be located at the parking area by building 400. The key is in the office. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) b28ef4469741de7e144ce2a5ebdc789ccc1dc85d 1882 1881 2013-07-31T13:19:42Z Ave082 33 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23, 28 or 57 to Blandonnet (stops under the bridge, go up and to the right in the middle of the stairs), and then change to the tram 18 "CERN" or Y "Val-Thoiry". Check [http://www.tpg.ch tpg.ch] for the timetable. Get off at the stop opposite the large wooden globe. To get to the busses from the airport you go left and into the area leading to the trains. Take the escalator to the second floor and the bus stop is right outside. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == To get into CERN if you don't have anybody to pick you up it is usually easiest to show your CERN contract to clerk at the visitors office, [http://building.web.cern.ch/map/building?bno=31 map]. * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, [http://building.web.cern.ch/map/building?bno=561 map]. ===CERN car=== You need to get a CERN car driving authorization from [https://edh.cern.ch/Document/General/DA here]. A scanned copy of your license needs to be attached. To get the license, you need security course, level 1+2, see below. The car is usually located outside the Bergen Office (plate number GE 603658, car number 3948), but could also be located at the parking area by building 400. The key is in the office. For other information [http://gs-dep.web.cern.ch/en/content/Mobility/CERN_car see]. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 364efef96f47161bd88147589b181d010f7d45a0 1883 1882 2013-07-31T13:20:42Z Ave082 33 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23, 28 or 57 to Blandonnet (stops under the bridge, go up and to the right in the middle of the stairs), and then change to the tram 18 "CERN" or Y "Val-Thoiry". Check [http://www.tpg.ch tpg.ch] for the timetable. Get off at the stop opposite the large wooden globe. To get to the busses from the airport you go left and into the area leading to the trains. Take the escalator to the second floor and the bus stop is right outside. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == To get into CERN if you don't have anybody to pick you up it is usually easiest to show your CERN contract to clerk at the visitors office, [http://building.web.cern.ch/map/building?bno=31 map]. * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, [http://building.web.cern.ch/map/building?bno=561 map]. *Alice registration. ===CERN car=== You need to get a CERN car driving authorization from [https://edh.cern.ch/Document/General/DA here]. A scanned copy of your license needs to be attached. To get the license, you need security course, level 1+2, see below. The car is usually located outside the Bergen Office (plate number GE 603658, car number 3948), but could also be located at the parking area by building 400. The key is in the office. For other information [http://gs-dep.web.cern.ch/en/content/Mobility/CERN_car see]. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) cefd557d39b2067fbfce11a900bac2b9624654e2 Expedition PCB introduction 0 286 1884 1176 2013-08-20T13:34:31Z Tni071 73 Should be "Pad Round 65, Hole Rnd 41", not "Pad Round 65, Hole Rnd 41". wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 65, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Symbols" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. [[Image:amp215_symbol.png|centre|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Parts" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Parts" folder in the Library Navigator Tree. # Create a new “Part” called “amp01”. (The Part Editor dialogue should pop-up.) # Change the Number to "Opamp1". Change the Label to "amp01A". # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, "A single amplifier packaged". # Specify a Reference des prefix of "U". # On the Part Editor dialog, click the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), click the Import button. # On the Import dialog, select the symbol name amp215 from the list (select "amplifiers" from the Central Library, and then the Symbol name). # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # Click the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # Click the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # Click the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # Click the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the Part Editor. [[Image:amp1_pin_mapping.png|centre|Pin mapping dialogue the OpAmp]] ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # Click button “layout templates”. # Click once on the “4 layer Template” and press the “copy template” button above. # Click once on the copied template and give it the name “lab1 template”. # Click once on the “edit template” button. A default template is opened in “Expedition PCB”. # Click on the menu “Setup>Setup Parameters”. # In the “General” tap set the “number of physical layers” to 6. “Display units” should be set to “microns” and “meters/s”. Click on “Apply”. # In the “Layer Stackup” tab change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “OK”. # “Save” the template and “exit”. [[Category:Mikroelektronikk]] db4bf91fbd37a399f281894347284ad2f7c358f3 1885 1884 2013-08-20T13:35:16Z Tni071 73 Reverted edits by [[Special:Contributions/Tni071|Tni071]] ([[User talk:Tni071|talk]]) to last revision by [[User:Nfyku|Nfyku]] wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 64, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Symbols" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. [[Image:amp215_symbol.png|centre|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Parts" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Parts" folder in the Library Navigator Tree. # Create a new “Part” called “amp01”. (The Part Editor dialogue should pop-up.) # Change the Number to "Opamp1". Change the Label to "amp01A". # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, "A single amplifier packaged". # Specify a Reference des prefix of "U". # On the Part Editor dialog, click the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), click the Import button. # On the Import dialog, select the symbol name amp215 from the list (select "amplifiers" from the Central Library, and then the Symbol name). # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # Click the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # Click the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # Click the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # Click the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the Part Editor. [[Image:amp1_pin_mapping.png|centre|Pin mapping dialogue the OpAmp]] ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # Click button “layout templates”. # Click once on the “4 layer Template” and press the “copy template” button above. # Click once on the copied template and give it the name “lab1 template”. # Click once on the “edit template” button. A default template is opened in “Expedition PCB”. # Click on the menu “Setup>Setup Parameters”. # In the “General” tap set the “number of physical layers” to 6. “Display units” should be set to “microns” and “meters/s”. Click on “Apply”. # In the “Layer Stackup” tab change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “OK”. # “Save” the template and “exit”. [[Category:Mikroelektronikk]] ba76be99fefc9757b79d99ec1d6d2ce82ebab987 1886 1885 2013-08-20T13:36:07Z Tni071 73 Should be "Pad Round 65, Hole Rnd 41", not "Pad Round 64, Hole Rnd 41" wikitext text/x-wiki This lab is designed to teach you the basic workflow for creating a simple printed circuit board using the Mentor Graphics Expedition PCB tools. You will be looking at editor environments and fundamental library concepts. You will learn how to create padstacks and cells. You will eventually assemble databases for creating parts. ===Schedule=== Lab 1 (4 hours) * Introduction to Expedition PCB * LIBRARY & DATA OVERVIEW (15 min) * CREATING PADSTACKS : exercise (45 min) * CREATING CELLS : exercise (45 min) * CREATING SYMBOLS : exercise (15 min) * CREATING PARTS : exercise (30 min) * CREATING A CUSTOM LAYOUT TEMPLATE : exercise (15 min) ==Introduction to Expedition PCB== Open the dashboard application /prog/mentor/ee2007.7/2007.7EE/SDD_HOME/common/linux/bin/dash & . The left panel (Shortcuts) is for placing shortcuts to applications. Drag the ExpeditionPCB, ePlanner, DxDesigner, and Library Manager icons to the Shortcuts area from the Toolboxes directories. Expedition PCB is the High-Speed (HS) layout tool. ePlanner is the tool for setting up the HS constraints. DxDesigner is the schematic capture tool, while the Library Manager allows you to create pad stacks, cells, symbols, and parts. Your projects will listed as they are created. ==PART 1 PADSTACK DEFINITION== # Open the “Library Manager” and create a new library for example under directory $HOME/kurs/lab1. What you do is to create a new directory $HOME/kurs/lab1/ and the library manager will create a number of files and directories in there. # Click on the “Setup” menu and select “Partition Editor”, or use the buttons under the menus. See that there are initially only 25 symbols declared and no cells, no PDBs and no IBIS models. Click on “cancel”. #: You can always chose between menus and buttons. # Under “Setup” select “Setup Parameters”. See that under “General” nothing is declared, but under “Via Definitions” there is only one standard padstack declared called “L: 026VIA”. Select “close”. # Select the button “Library Services”. Select “Padstacks” menu and select with the browser for the “input from” to “/heim/kjetil/mgc/phys321.lmc”. Click on “open”. # Select from “Padstacks in import partition” the “IPC, SOIC” and "Pad Round 65, Hole Rnd 41" padstacks. Be sure you select mode = “copy”. Press the “right arrow” and then “apply”. See that in the left table, the imported padstacks (for example the “IPC, SOIC”) will have a blue color. Select “close”. # Select in the "Library Navigator Tree" the “Padstacks" item (folder). You should now have two padstack declarations under item "All". Examine the properties of both padstack declarations by double clicking on one of them. # Examine the menus “Pads” and “Holes” from the “Padstack Editor”. Click in the menus once on the declared names listed and examine their declarations. ===Exercise=== Create a padstack definition for the through hole via with min. 250 &mu;m and pad min. 450 &mu;m (Hint: define first the “hole” and then the “pads” you need. Finally create the “padstack” with the newly declared “hole” and “pads” definitions.) ===Summary=== You now have learned how to create your own library; copy padstack definitions from other libraries and create your own padstacks with help of documents you get from the PCB manufacturer. ==PART 2 CREATING NEW CELLS== You should have the “lab1” Library open in the Library Manager. # Right-click on the "Cells" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" section and select "New Cell". # Enter the Cell name "8SO". # Specify a Total number of pins of 8. Specify a Layers while editing cell of 4. Choose the IC – SOIC Package group. # Click the "Cell Properties" button. Enter a description of SOIC 8. Set the Units to mm. Specify a Height of 1.75. # On the Package Cell Properties dialogue, <click> the Close button. # On the Create Package Cell dialogue, <click> the Next button and the Cell Editor tool should open. # On the Place Pins dialogue, click the Pin # column until the pins are sorted from 1 to 8. # Select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the Shift key, click the down arrow in the Padstack Name field for pin 8, and choose the SOIC padstack from the pulldown list. It should now be assigned to all of the pins. # Click the Pattern Place tab. # Set the Pattern type to SOIC and enter the following values into the pattern form: #: Body length = 5 #: Body width = 3 #: Pin to pin spacing = 1.27 #: Row to row spacing = 5.2 #: Make sure the Include Assembly outline and Include Silkscreen outline option are checked. # With the pins still selected, <click> the Place button. # Click the Close button on the Place Pins dialogue. # Examine the graphics. Select File>Save from the menus and then select File>Exit Graphics from the menus. # Click the S80 symbol to examine the Preview of the new cell. # Click the New Cell button. # Enter the Cell name 8DIP. # Set the Total number of pins to 8. Set the Layers while editing cell to 4. Choose the IC - DIP Package group. # Click the Cell Properties button. Enter a description of DIP 8. Verify that the Units is set to th.(=mil) Specify a Height of 100. Click the Close button. # On the Create Package Cell dialog, click the Next button. # Move the Place Pins dialog out of the way. # In the graphics environment, select Setup > Editor Control from the menus. # Select the Grids tab. Specify a Route grid of 25 and a Drawing grid of 25. # On the Place Pins dialogue, select the Padstack Name field for pin 1. Press and hold the <Shift> key then select the Padstack Name field for pin 8. # Continuing to hold the <Shift> key, <click> the down arrow in the Padstack Name field for pin 8 and choose the through via Pad Round 65, Hole Rond 41 (the one from previous exercise) from the pulldown list. It should then be assigned to all of the pins. # Click the Parameter Place tab and enter the following values: #: Columns: 4 Spacing: 100 #: Rows: 2 Spacing: 300 #: Pin Sequence = first option. # Click the Place button. # Position the cursor over the drawing area. The pins are attached to the cursor for placement. Click directly on the “origin” marker to place them down. # Select View>Fit All from the menus. # Select Edit>Place>Assembly Outline from the menus. Using the Rectangle draw tool, draw a rectangle inside of all the pins. Draw any other assembly graphics you desire by selecting another draw tool. # Select Edit>Place>Silkscreen Outline from the menus. Draw a rectangle outside of all the pins. Draw any other silkscreen graphics you desire. # Select Edit>Place>Placement Outline. Draw a rectangle a little larger than the silkscreen outline. # Move Reference Designator and Part Number text as desired by first selecting the text, positioning the mouse cursor over the text border until a “move” cursor appears, then click-drag the text. # Select Edit>Place>Silkscreen Ref Des from the menus and place the text outside of the silkscreen outline. # Select File>Save from the menus. # Select File>Exit Graphics from the menus. # Select each cell in the list to see a Preview of it. ==PART 3 CREATING SYMBOLS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Symbols" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Symbols" folder in the Library Navigator Tree. # Create a new “Symbol” called “amp215”. (A graphical editor should pop-up.) # Examine the window and create the opamp as pictured below: (don’t forget to give the pins properties e.g. “input” property or “output” property.) # Save your work and exit the “Symbol Editor”. During “saving”, the design is checked against DRC rules. [[Image:amp215_symbol.png|centre|Symbol to draw for the OpAmp]] ==PART 4 CREATING PARTS== You should have the “lab1” Central Library open in the Library Manager. # Right-click on the "Parts" folder in the Library Navigator Tree. # Create a new “Partition” called “amplifiers”. # Right-click on the "amplifiers" folder under the "Parts" folder in the Library Navigator Tree. # Create a new “Part” called “amp01”. (The Part Editor dialogue should pop-up.) # Change the Number to "Opamp1". Change the Label to "amp01A". # At the lower-left corner of the PartsDB Editor dialog, verify that the Component property value for Type is IC. # Enter the Description of IC, "A single amplifier packaged". # Specify a Reference des prefix of "U". # On the Part Editor dialog, click the Pin Mapping button. # In the Assign symbols section of the dialog (upper-left corner), click the Import button. # On the Import dialog, select the symbol name amp215 from the list (select "amplifiers" from the Central Library, and then the Symbol name). # Select Create New gate information option. # Enter the Number of slots as 1. # Select the Include pin properties option. # Click the OK button. A new gate will be created in the Logical table with 4 slots. # In the Assign package cell section of the dialog (upper-right corner), click on the Import button. # On the Import dialog, select 8DIP from the list of cells and <click> the OK button. # Examine the Logical table and Physical table at the bottom of the Pin Mapping dialog. The symbol imported with 1 slot defined. # Click the Physical tab. Enter the following physical pin outs: #: In1 2 #: In2 3 #: VCC 6 #: GND 7 #: Out 8 # Click the Supply and NC tab. # Enter a Pin # of 1,4,5 for NC. # Click the OK button on the Pin Mapping dialog to save your work. # Select File>Save from the menus. # Exit the Part Editor. [[Image:amp1_pin_mapping.png|centre|Pin mapping dialogue the OpAmp]] ==PART 5 CREATING A LAYOUT TEMPLATE== You should have the “lab1” Central Library open in the Library Manager. # Click button “layout templates”. # Click once on the “4 layer Template” and press the “copy template” button above. # Click once on the copied template and give it the name “lab1 template”. # Click once on the “edit template” button. A default template is opened in “Expedition PCB”. # Click on the menu “Setup>Setup Parameters”. # In the “General” tap set the “number of physical layers” to 6. “Display units” should be set to “microns” and “meters/s”. Click on “Apply”. # In the “Layer Stackup” tab change for all dielectric layers thickness the value to “500 um”. Make sure you select the option “keep layer stackup in sync with layer def. In Planes tab.” # Select “OK”. # “Save” the template and “exit”. [[Category:Mikroelektronikk]] db4bf91fbd37a399f281894347284ad2f7c358f3 SmartFusion2 0 416 1887 1862 2013-08-22T10:12:19Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= * Rightclick in the library pan of Questasim and choose new->Library. * Choose "A map to an existing library". * Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. * Include the library in the files where you need SF2 cores The same applies for other actel devices. =Libero errors, warnings and problems= * If you get "Warning: CMP008: module_name is not an Actel cell defined in the cell library." it means the mentioned module was not included in the synthesis and thus assumed to be an Actel standard module. Rightclick synthesis and select "Organize input files->Organize source files" select the mentioned module and press add. 10ed4bdfaa2fce5e283f198d8330fa2af14a038d 1888 1887 2013-08-22T10:22:53Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= * Rightclick in the library pan of Questasim and choose new->Library. * Choose "A map to an existing library". * Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. * Include the library in the files where you need SF2 cores The same applies for other actel devices. =Libero errors, warnings and problems= * If you get "Warning: CMP008: module_name is not an Actel cell defined in the cell library." it means the mentioned module was not included in the synthesis and thus assumed to be an Actel standard module. Rightclick synthesis and select "Organize input files->Organize source files" select the mentioned module and press add. * Generate programming data fails without explanation: Constraint format has changed between Libero versions. Generate a new constraint file using the I/O editor based on the data in the old constraint file. 03c24bcdc794429e726d79d993b2a04925f11f4d 1889 1888 2013-08-26T13:54:27Z Ave082 33 wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Other designfiles and documents can be found here: http://emcraft.com/products/153 Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= * Rightclick in the library pan of Questasim and choose new->Library. * Choose "A map to an existing library". * Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. * Include the library in the files where you need SF2 cores The same applies for other actel devices. =Libero errors, warnings and problems= * If you get "Warning: CMP008: module_name is not an Actel cell defined in the cell library." it means the mentioned module was not included in the synthesis and thus assumed to be an Actel standard module. Rightclick synthesis and select "Organize input files->Organize source files" select the mentioned module and press add. * Generate programming data fails without explanation: Constraint format has changed between Libero versions. Generate a new constraint file using the I/O editor based on the data in the old constraint file. 6ad753c2a13bfe9f791985b01ef83bd6e9e64953 Cadence Virtuoso overview 0 38 1890 1222 2013-09-02T16:11:26Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence_init.csh virtuoso Virtuoso Mixed Signal Design Environment should now start up: <img src="uploads/icms_uppstart.JPG" /> In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. <img src="uploads/new_library.JPG" /> After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name (for example "torcell", as I did). You must also specify which library the design belongs to, and here you specify the library that you have just created (in my case, TORLIB). Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. <img src="uploads/create_new_file.JPG" /> Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: <img src="uploads/virtuoso_schematic_editor.JPG" /> ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB"?!?(analogLib) as library, "nmos" (for n-type transistor) or "pmos" (for p-type transistor) as cell and "spectreS"?!?(symbol) as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. <img src="uploads/library_browser.JPG" /> 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. For the transistors, set the "Width" and "Lenght" properties to "4u" and "1u". For the pmos transistor, set the "Model name" property to "modp". For the nmos transistor, set the "Model name" property to "modn". As we will see later, the "modn" and "modp" models correspond to SPICE simulation models used by the simulator in the Analog Environment. <img src="uploads/edit_object_properties.JPG" /> <img src="uploads/edit_object_prop_pmos.JPG" /> 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Tools > Analog Environment". The "Virtuoso Analog Environment" should now come up: <img src="uploads/analog_env_1.JPG" /> ==Simulating the design== 8. Choose "Launch > ADE GXL" and press create new view. 9. Choose "Create > Test..." select the cell to simulate. 10. Choose "Simulation > Netlist > Create Raw". 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. <img src="uploads/choosing_analyses.JPG" /> <img src="uploads/select_comp_parameter.JPG" /> The analog environment should now look like this: <img src="uploads/analog_env_2.JPG" /> 13. Choose "Simulation > Run". 14. After the simulation has completed, choose "Results > Plot Outputs > DC". The outputs should look like this: <img src="uploads/plot_output_dc.JPG" /> To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. <img src="uploads/add_pin.JPG" /> After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". <img src="uploads/create_cellview_from_cellview.JPG" /> Now press OK: <img src="uploads/symbol_generation_options.JPG" /> Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: <img src="uploads/symbol_editor.JPG" /> Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 17184c41f91c70ce3e574288df52dd0ca5d39cd6 1891 1890 2013-09-03T14:36:23Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence_init.csh virtuoso Virtuoso Mixed Signal Design Environment should now start up: <img src="uploads/icms_uppstart.JPG" /> In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. <img src="uploads/new_library.JPG" /> After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name (for example "torcell", as I did). You must also specify which library the design belongs to, and here you specify the library that you have just created (in my case, TORLIB). Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. <img src="uploads/create_new_file.JPG" /> Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: <img src="uploads/virtuoso_schematic_editor.JPG" /> ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB"?!?(analogLib) as library, "nmos" (for n-type transistor) or "pmos" (for p-type transistor) as cell and "spectreS"?!?(symbol) as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. <img src="uploads/library_browser.JPG" /> 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. For the transistors, set the "Width" and "Lenght" properties to "4u" and "1u". For the pmos transistor, set the "Model name" property to "modp". For the nmos transistor, set the "Model name" property to "modn". As we will see later, the "modn" and "modp" models correspond to SPICE simulation models used by the simulator in the Analog Environment. <img src="uploads/edit_object_properties.JPG" /> <img src="uploads/edit_object_prop_pmos.JPG" /> 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Tools > Analog Environment". The "Virtuoso Analog Environment" should now come up: <img src="uploads/analog_env_1.JPG" /> ==Simulating the design== 8. Choose "Launch > ADE GXL" and press create new view. 9. Choose "Create > Test..." select the cell to simulate. 10. Choose "Simulation > Netlist > Create". 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. <img src="uploads/choosing_analyses.JPG" /> <img src="uploads/select_comp_parameter.JPG" /> The analog environment should now look like this: <img src="uploads/analog_env_2.JPG" /> 13. Choose "Simulation > Run". 14. After the simulation has completed, choose "Results > Plot Outputs > DC". The outputs should look like this: <img src="uploads/plot_output_dc.JPG" /> To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. <img src="uploads/add_pin.JPG" /> After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". <img src="uploads/create_cellview_from_cellview.JPG" /> Now press OK: <img src="uploads/symbol_generation_options.JPG" /> Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: <img src="uploads/symbol_editor.JPG" /> Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 56ac67e82d0eb21d78eeb95701f76b15e698a525 1895 1891 2013-09-04T13:11:32Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up: [[File:icms_uppstart.jpg]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. [[File:new_library.jpg]] After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. [[File:create_new_file.jpg]] Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.jpg]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. [[File:library_browser.jpg]] 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. [[File:edit_object_properties.jpg]] [[File:edit_object_prop_pmos.jpg]] 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up: [[File:analog_env_1.jpg]] ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:choosing_analyses.jpg]] [[File:select_comp_parameter.jpg]] The analog environment should now look like this: [[File:analog_env_2.jpg]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.jpg]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. [[File:add_pin.jpg]] After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". [[File:create_cellview_from_cellview.jpg]] Now press OK: [[File:symbol_generation_options.jpg]] Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: [[File:symbol_editor.jpg]] Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] d03f6d61f3b572c3855863e8f57d9f08f2c38294 1896 1895 2013-09-04T13:37:23Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. [[File:create_new_file.jpg]] Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.jpg]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. [[File:library_browser.jpg]] 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. [[File:edit_object_properties.jpg]] [[File:edit_object_prop_pmos.jpg]] 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up: [[File:analog_env_1.jpg]] ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:choosing_analyses.jpg]] [[File:select_comp_parameter.jpg]] The analog environment should now look like this: [[File:analog_env_2.jpg]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.jpg]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. [[File:add_pin.jpg]] After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". [[File:create_cellview_from_cellview.jpg]] Now press OK: [[File:symbol_generation_options.jpg]] Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: [[File:symbol_editor.jpg]] Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 4d429e8c5e8bd5d9501a1ad3984d9cd166546623 1898 1896 2013-09-04T13:45:48Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png]] The analog environment should now look like this: [[File:analog_env_2.jpg]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. [[File:add_pin.jpg]] After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". [[File:create_cellview_from_cellview.jpg]] Now press OK: [[File:symbol_generation_options.jpg]] Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: [[File:symbol_editor.jpg]] Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 07d9a560dc4c8eb86af2542f0a4f75827f88243d 1900 1898 2013-09-04T13:47:49Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png]] The analog environment should now look like this: [[File:analog_env_2.png]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. [[File:add_pin.jpg]] After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". [[File:create_cellview_from_cellview.jpg]] Now press OK: [[File:symbol_generation_options.jpg]] Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: [[File:symbol_editor.jpg]] Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] fb9fb64ade04ce317b35a7a0e62fa3695391c838 1903 1900 2013-09-04T13:51:09Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|400px]] The analog environment should now look like this: [[File:analog_env_2.png|400px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|400px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. [[File:add_pin.jpg]] After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". [[File:create_cellview_from_cellview.jpg]] Now press OK: [[File:symbol_generation_options.jpg]] Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: [[File:symbol_editor.jpg]] Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 16f2b24dfda64ab1f8093e85dc014db9ed2cc99a 1904 1903 2013-09-04T13:51:49Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|200px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. [[File:add_pin.jpg]] After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". [[File:create_cellview_from_cellview.jpg]] Now press OK: [[File:symbol_generation_options.jpg]] Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: [[File:symbol_editor.jpg]] Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] 614598c2b5a58beff34b586cbf33de2cad791ff5 1905 1904 2013-09-04T13:52:16Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). First we return to the schematic editor to add the IN and OUT pins that connect our inverter to the outside world. Click at the "Pin" symbol or press 'p' to place pins. Connect an input pin to the inverter input and an output pin to the inverter output. [[File:add_pin.jpg]] After checking and saving the design, choose "Design -> Create Cellview -> From Cellview". [[File:create_cellview_from_cellview.jpg]] Now press OK: [[File:symbol_generation_options.jpg]] Connect the left pin to the input pin and the right pin to the output pin. Then press OK. The symbol editor will pop up: [[File:symbol_editor.jpg]] Draw the symbol in whatever way you want, and then save it by clicking the "Save" symbol or pressing 'S'. [[Category:Mikroelektronikk]] e7d9622f92a4271e18ff7edea47f023af63b7175 1906 1905 2013-09-04T14:05:20Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol- [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] 4d86597184c3ed5d83fb97d9f5a57fe30aac9e3d File:Virtuoso schematic editor.png 6 418 1897 2013-09-04T13:44:11Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Select comp parameter.png 6 419 1899 2013-09-04T13:46:53Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Analog env 2.png 6 420 1901 2013-09-04T13:48:00Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Plot output dc.png 6 421 1902 2013-09-04T13:49:52Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Symbol.png 6 422 1907 2013-09-04T14:06:30Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Spice deck 0 224 1908 760 2013-09-08T22:17:26Z Ave082 33 wikitext text/x-wiki LTspice file:[spice.asc] <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD VSS 3 * Transistor * Drain Gate Source Bulk MN1 Out In VSS VSS nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out VSS 0.1p * Voltage source * from to volts VI In VSS DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0.2 + TOX=10e-9 PHI=0.93 GAMMA=0.6 + CJ=9.8E-5 PB=0.72 MJ=0.36 + CJSW=2.2E-10 MJSW=0.1) * * Setup * .options nomod nopage .width OUT=80 .connect vss 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] 0bee3efb1e739efc6090a58aaeae919d1d45263b 1909 1908 2013-09-08T22:21:34Z Ave082 33 wikitext text/x-wiki LTspice file:[Media:spice.asc] <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD VSS 3 * Transistor * Drain Gate Source Bulk MN1 Out In VSS VSS nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out VSS 0.1p * Voltage source * from to volts VI In VSS DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0.2 + TOX=10e-9 PHI=0.93 GAMMA=0.6 + CJ=9.8E-5 PB=0.72 MJ=0.36 + CJSW=2.2E-10 MJSW=0.1) * * Setup * .options nomod nopage .width OUT=80 .connect vss 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] 812cbf2fc62c05372e467cea8c09ff2108fb1f86 1910 1909 2013-09-08T22:21:57Z Ave082 33 wikitext text/x-wiki LTspice file:[[Media:spice.asc]] <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD VSS 3 * Transistor * Drain Gate Source Bulk MN1 Out In VSS VSS nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out VSS 0.1p * Voltage source * from to volts VI In VSS DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0.2 + TOX=10e-9 PHI=0.93 GAMMA=0.6 + CJ=9.8E-5 PB=0.72 MJ=0.36 + CJSW=2.2E-10 MJSW=0.1) * * Setup * .options nomod nopage .width OUT=80 .connect vss 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] 47dc94de33ac260264146c226ca97b1b725abb86 1912 1910 2013-09-08T22:24:49Z Ave082 33 wikitext text/x-wiki LTspice file:[[Media:spice.asc.txt]] <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD GND 3 * Transistor * Drain Gate Source Bulk MN1 Out In GND GND nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out GND 0.1p * Voltage source * from to volts VI In GND DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0.2 + TOX=10e-9 PHI=0.93 GAMMA=0.6 + CJ=9.8E-5 PB=0.72 MJ=0.36 + CJSW=2.2E-10 MJSW=0.1) * * Setup * .options nomod nopage .width OUT=80 *.connect GND 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] 41a67ea18c92b42c6be3f68fd93770fd50a2a563 1913 1912 2013-09-08T22:25:19Z Ave082 33 wikitext text/x-wiki LTspice file:[[Media:spice.asc.txt]] (Rename to spice.asc after downloading) <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD GND 3 * Transistor * Drain Gate Source Bulk MN1 Out In GND GND nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out GND 0.1p * Voltage source * from to volts VI In GND DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0.2 + TOX=10e-9 PHI=0.93 GAMMA=0.6 + CJ=9.8E-5 PB=0.72 MJ=0.36 + CJSW=2.2E-10 MJSW=0.1) * * Setup * .options nomod nopage .width OUT=80 *.connect GND 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] ff3f08d33e9bff0c187079cf79b92b50ffeb33a6 1914 1913 2013-09-08T22:25:53Z Ave082 33 wikitext text/x-wiki LTspice file:[[Media:spice.asc.txt|Spice file]] (Rename to spice.asc after downloading) <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD GND 3 * Transistor * Drain Gate Source Bulk MN1 Out In GND GND nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out GND 0.1p * Voltage source * from to volts VI In GND DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0.2 + TOX=10e-9 PHI=0.93 GAMMA=0.6 + CJ=9.8E-5 PB=0.72 MJ=0.36 + CJSW=2.2E-10 MJSW=0.1) * * Setup * .options nomod nopage .width OUT=80 *.connect GND 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] 4db73601f3d8b66c8302209f1a910f85b45328fb 1915 1914 2013-09-09T10:21:41Z Ave082 33 wikitext text/x-wiki LTspice file:[[Media:spice.asc.txt|Spice file]] (Rename to spice.asc after downloading) <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD GND 3 * Transistor * Drain Gate Source Bulk MN1 Out In GND GND nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out GND 0.1p * Voltage source * from to volts VI In GND DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0) * * Setup * *.options nomod nopage *.width OUT=80 *.connect GND 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] afde1450650bc8f7a7b260799adb521224ec21c9 1916 1915 2013-09-09T10:24:39Z Ave082 33 wikitext text/x-wiki LTspice file:[[Media:spice.asc.txt|Spice file]] (Rename to spice.asc after downloading) Select output node after running simulation and change the vertical scale to volts to see output level. Choose View->Spice Error Log to view operating point. <pre> Common Source gain stage, max gain * Analysis and design of analog integrated circuits * Problem 3.4 * NB ! Model level 1 only - Similar to hand calcualtions * * Voltage * from to volts VDD VDD GND 3 * Transistor * Drain Gate Source Bulk MN1 Out In GND GND nmos W=10u L=1u * Load Resistor and Capacitor * from to ohms RD VDD Out 5k Cl Out GND 0.1p * Voltage source * from to volts VI In GND DC 1.281 AC 1 * * Models * .model nmos nmos (level=1 VT0=0.6 KP=200u LAMBDA=0) * * Setup * *.options nomod nopage *.width OUT=80 *.connect GND 0 * * Simulation and Plots * *.TF V(Out) VI *.OP .ac dec 10 1k 100.0e9 * Amplitude Bode Plot .plot ac vdb(Out) * Phase Bode Plot .plot ac vp(Out) .END </pre> [[Category:Mikroelektronikk]] aea54b48c2bab6090b3510cb654e7d247a032b65 File:Spice.asc.txt 6 423 1911 2013-09-08T22:23:52Z Ave082 33 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 1917 1911 2013-09-09T10:28:29Z Ave082 33 Ave082 uploaded a new version of &quot;[[File:Spice.asc.txt]]&quot; wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Microelectronics group 0 25 1918 1841 2013-09-24T09:14:45Z Cto070 76 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[SmartFusion2]] Oppsett og design med SF2 * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus [[Category:Mikroelektronikk]] 2b6b0276974cfafa939287d9c8a37329662c954d SmartFusion2- AMBA APB, Custom Peripheral 0 424 1919 2013-09-24T12:14:54Z Cto070 76 Created page with "=Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with ..." wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project 868217dc2f6e269637093cdeadbdfe2cdd2aa9d7 1920 1919 2013-09-24T12:29:30Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''.[[File:New_project.jpg]] 4e0a86990f978bb29d38ce07a6e858066b411d4d 1922 1920 2013-09-26T12:53:42Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg]]<br> MSS CCC<br>[[File:MSS_reset.jpg]]<br> Reset Controller<br>[[File:FIC0.jpg]]<br> FIC 0<br>[[File:MMUART.jpg]]<br> MMUART 0 Your MSS should now look like this: [[File:MSS_finished.jpg]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg]][[File:CCC_core.jpg]] Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''. [[File:Module_bus_interface.jpg]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg]] e2b282b6965aab811ccd4f685bff6a2fe1433058 1923 1922 2013-09-26T13:29:00Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg]]<br> MSS CCC<br>[[File:MSS_reset.jpg]]<br> Reset Controller<br>[[File:FIC0.jpg]]<br> FIC 0<br>[[File:MMUART.jpg]]<br> MMUART 0 Your MSS should now look like this: [[File:MSS_finished.jpg]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg]][[File:CCC_core.jpg]] Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''. [[File:Module_bus_interface.jpg]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= Use run.do supplied and user.bfm 12c327ea23b0d009753d17a96d11ae1efe923b8a SmartFusion2- AMBA APB, Custom Peripheral 0 424 1924 1923 2013-09-27T12:16:13Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg]]<br> MSS CCC<br>[[File:MSS_reset.jpg]]<br> Reset Controller<br>[[File:FIC0.jpg]]<br> FIC 0<br>[[File:MMUART.jpg]]<br> MMUART 0 Your MSS should now look like this: [[File:MSS_finished.jpg]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg]][[File:CCC_core.jpg]] Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''. [[File:Module_bus_interface.jpg]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design''. [[File:Presynth_transcript.jpg]]<br>[[File:Presynth_wave.jpg]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause this LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. 26239a2de5095fbd95b7e4b496dffec7a5bedf0b 1925 1924 2013-09-27T12:42:18Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg]]<br> MSS CCC<br>[[File:MSS_reset.jpg]]<br> Reset Controller<br>[[File:FIC0.jpg]]<br> FIC 0<br>[[File:MMUART.jpg]]<br> MMUART 0 Your MSS should now look like this: [[File:MSS_finished.jpg]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg]][[File:CCC_core.jpg]] Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''. [[File:Module_bus_interface.jpg]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design''. [[File:Presynth_transcript.jpg]]<br>[[File:Presynth_wave.jpg]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause this LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. [[File:Debug_configuration.jpg]][[File:Debugging.jpg]][[File:Debug_binary_count.jpg]] 1668bf3910f40c408ce5779d97f514a3efeee346 1945 1925 2013-09-28T08:10:57Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|500 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|400 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''. [[File:Module_bus_interface.jpg]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design''. [[File:Presynth_transcript.jpg]]<br>[[File:Presynth_wave.jpg]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause this LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. [[File:Debug_configuration.jpg]][[File:Debugging.jpg]][[File:Debug_binary_count.jpg]] d109e0a0a9ff1ba8027445e375ed804544a344cc 1946 1945 2013-09-28T08:19:14Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|400 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|500 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause this LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> bb24e856b89b2482f46a7b1b657ebc7f24711d56 1947 1946 2013-09-28T08:21:52Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause this LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> ae119b27996e7a268b5ba09dfe4dfb830c15ce40 1948 1947 2013-09-28T08:59:39Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to create a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> 39019af84aa6a593ad0b03a0aea0c616868cc6a9 1949 1948 2013-09-28T09:00:20Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial a UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> 9d5336980c1c124c4c56dcf289437418db8399d4 1950 1949 2013-09-28T09:01:12Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Actel. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> c709630acee0bf690d2d64dca844daf24e278d81 1951 1950 2013-09-28T09:01:46Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. You can name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> 4eb67670c7a0b026fe89aca0570b7365c389348d 1952 1951 2013-09-28T09:02:22Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now, Import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this, you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> ad77c67f06b58dc55a17aa097b4ee62ca7c28439 1953 1952 2013-09-28T09:42:01Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> 7ba9fc420899406b12239131247b8417fb2f935c 1954 1953 2013-09-30T06:40:04Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. [[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals. [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> c04cd5b25264ad0882b7021646590466c0f29730 1958 1954 2013-09-30T07:56:07Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> 125b494b31f8244c97945791b404f2a4d8bf4247 1959 1958 2013-09-30T08:24:50Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> [[Category:Mikroelektronikk]] 4401cea8601c1a0e19c431c4a08cf03f36d17d3a 1960 1959 2013-09-30T09:02:10Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files [[Media:APB_DCS_files.zip]] by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). In the supplied files there is a file called User.bfm. Copy the content of this file to the User.bfm in your project, located under ''Files'' and ''simulation''. Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> ------------------------------------------------------------------------------- -- Title : APB_to_DCS -- Project : RCU2 ------------------------------------------------------------------------------- -- File : apb_to_dcs.vhd -- Last edited by : Christian Torgersen -- Last update : 30.09.2013 - 09:26 -- Current Revision : 1.0 ------------------------------------------------------------------------------- -- Description : Mapping between AMBA APB and DCS bus. ------------------------------------------------------------------------------- -- Revision History : ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway -- This file has been written by Christian Torgersen -- Christian.torgersen@student.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; library work; use work.dcs_interface_pkg.all; entity apb_to_dcs is port( --APB input control signals penable : in std_logic; -- APB enable signal. Asserted high on second pulse psel : in std_logic; -- APB slave select from master pwrite : in std_logic; -- APB direction setting --APB input and addr paddr : in std_logic_vector(31 downto 0); -- APB address pwdata : in std_logic_vector(31 downto 0); -- APB write data --APB output signals prdata : out std_logic_vector(31 downto 0); -- APB read data pready : out std_logic; -- APB hold signal, for read/write more than 2 cycles pslverr : out std_logic; -- APB slave error signal clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity reset_from_siu : in std_logic; -- asynch reset from SIU, positive polarity --internal resets global_reset : out std_logic; -- global reset, positive polarity rcu_reset : out std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : out std_logic; -- reset for FEC, positive polarity --DCS bus signals we_dcs : out std_logic; -- write enable to the internal modules dcs_busBadd : out std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : out std_logic; -- interrupt in case DCS needs bus dcs_bg : in std_logic; -- dcs bus grant from arbiter dcs_br : out std_logic; -- dcs bus request to arbiter siu_bg : in std_logic -- siu bus grant from arbiter ); end apb_to_dcs; architecture arc of apb_to_dcs is --signal declarations type state is (s_idle, s_wait_for_grant, s_grant, s_error); signal current_state, next_state : state; -- signal resetting : std_logic; -- high when the resetting addresses are received, only used by dcs_addr signal timeout :std_logic; signal timeout_cnt :std_logic_vector(6 downto 0); signal timeout_cnt_en :std_logic; signal we_dcs_i :std_logic; begin --combinatorics timeout <= timeout_cnt(6); we_dcs <= we_dcs_i; dcs_br <= '1' when (psel = '1'and (next_state = s_wait_for_grant or next_state = s_grant)) else '0'; dcs_busBadd <= paddr(15 downto 0); --linking between APB and dcs addresses dcs_busBdata_out <= pwdata when (pwrite='1' and dcs_bg= '1') else (others => '0'); -- APB to DCS data prdata <= dcs_busBdata_in when (pwrite ='0' and dcs_bg= '1') else (others => '0'); -- DCS to APB data -- purpose: timeout counter for transaction p_timeout_cnt: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt <= (others => '0'); elsif rising_edge(clk) then if (timeout_cnt_en = '1') then timeout_cnt <= timeout_cnt + 1; else timeout_cnt <= (others => '0'); end if; end if; end process p_timeout_cnt; -- purpose: state machine driver p_state_driver: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then current_state <= s_idle; elsif rising_edge(clk) then current_state <= next_state; end if; end process p_state_driver; --purpose: set next state p_next_state: process(current_state, dcs_bg, timeout, psel, penable) begin case current_state is when s_idle => if (dcs_bg = '1' and psel = '1' and penable = '0') then -- giving two cycle read/write possibility next_state <= s_grant; elsif (dcs_bg = '0' and psel = '1' and penable = '0') then --Three or more cycle read/write next_state <= s_wait_for_grant; else next_state <= s_idle; end if; when s_wait_for_grant => if (dcs_bg = '1') then next_state <= s_grant; elsif (timeout = '1') then next_state <= s_error; else next_state <= s_wait_for_grant; end if; when s_grant => next_state <= s_idle; when s_error => next_state <= s_idle; when others => next_state <= s_idle; end case; end process p_next_state; -- purpose: set outputs of module and internal signals p_output: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt_en <= '0'; we_dcs_i <= '0'; pslverr <= '0'; pready <= '1'; elsif rising_edge(clk) then --defaults case current_state is when s_idle => pslverr <= '0'; timeout_cnt_en <= '0'; when s_wait_for_grant => when s_grant => we_dcs_i <= '0'; pready <= '1'; when s_error => pslverr <= '1'; pready <= '1'; timeout_cnt_en <= '0'; when others => --defaults end case; case next_state is when s_idle => pready <= '1'; when s_wait_for_grant => timeout_cnt_en <= '1'; pready <= '0'; when s_grant => timeout_cnt_en <= '0'; pready <= '1'; we_dcs_i <= pwrite; when others => end case; end if ; end process p_output; --purpose: resets p_reset : process(clk, reset_n) begin if (reset_n = '0') then global_reset <= '1'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '1'; fec_reset <= '1'; elsif rising_edge(clk) then global_reset <= '0'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '0'; fec_reset <= '0'; if (we_dcs_i = '1') then case (paddr(15 downto 0)) is when c_global_reset => global_reset <= '1'; when c_rcu_reset => rcu_reset <= '1'; when c_fec_reset => fec_reset <= '1'; when others => -- do nothing end case; end if; end if; end process p_reset; --Purpose: Set up bus interrupt p_bus_int: process (clk, reset_n, reset_from_siu) begin if( reset_n = '0' or reset_from_siu = '1') then dcs_bi <= '0'; elsif (rising_edge(clk)) then if(siu_bg = '0' or dcs_bg = '1') then --do not interrupt if we have grant dcs_bi <= '0'; elsif (paddr (15 downto 0) = c_arbiter_irq) then dcs_bi <= '1'; end if; end if; end process p_bus_int; end architecture arc; ------------------------------------------------------------------------------- -- Title : DCS interface Package -- Project : RCU DCS interface ------------------------------------------------------------------------------- -- File : $RCSfile: dcs_interface_pkg.vhd,v $ -- Last edited by : $Author: alme $ -- Last update : $Date: 2008/02/15 12:23:43 $ -- Current Revision : $Revision: 1.4 $ ------------------------------------------------------------------------------- -- Description : Constant and function library for RCU Trigger Receiver -- design ------------------------------------------------------------------------------- -- Revision History : -- http://portal1.ift.uib.no/cgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway, 2005 -- This file has been written by Johan Alme -- Johan.Alme@ift.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; package dcs_interface_pkg is -- address information (this should be moved to a global adress mapping definition file.) -- memory spaces. -- Safety module address. Always ack these. constant c_MSM_space : std_logic_vector(3 downto 0):=X"8"; -- Actel space should NEVER be acked constant c_Actel_space : std_logic_vector(3 downto 0):=X"B"; -- treat as normal except for the subadresses 0xA00 and 0xA01 that should not be acked. constant c_trigger_space : std_logic_vector(3 downto 0):=X"4"; -- sub adresses -- belongs to trigger space. The two addresses are defined on the DCS board and should not be acked. constant c_dcsSetBunchReset : std_logic_vector(11 downto 0):= X"A00"; constant c_dcsSetEventReset : std_logic_vector(11 downto 0):= X"A01"; constant c_global_reset : std_logic_vector(15 downto 0):= X"5300"; constant c_fec_reset : std_logic_vector(15 downto 0):= X"5301"; constant c_rcu_reset : std_logic_vector(15 downto 0):= X"5302"; constant c_arbiter_irq : std_logic_vector(15 downto 0):= X"5310"; -- interrupts SIU grant constant c_grant : std_logic_vector(15 downto 0):= X"5311"; -- grant information given --Constant defining mem mapped mode on which the interface should be active constant c_memMappedMode0 : std_logic_vector(1 downto 0) := "00"; constant c_memMappedMode1 : std_logic_vector(1 downto 0) := "11"; end package dcs_interface_pkg; -------------------------------------------------------------------------------- -- Company: University of Bergen -- -- File: DCS_test.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- Component used to test functionality of apb_to_dcs bridge -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: Christian Torgersen -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity DCS_test is port ( clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity global_reset : in std_logic; -- global reset, positive polarity rcu_reset : in std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : in std_logic; -- reset for FEC, positive polarity we_dcs : in std_logic; -- write enable to the internal modules dcs_busBadd : in std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : in std_logic; -- interrupt in case DCS needs bus dcs_bg : out std_logic; -- dcs bus grant from arbiter dcs_br : in std_logic; -- dcs bus request to arbiter siu_bg : out std_logic -- siu bus grant from arbiter ); end DCS_test; architecture arch of DCS_test is -- signal, component etc. declarations signal data_outs :std_logic_vector(31 DOWNTO 0); signal wr_enable, rd_enable : std_logic; component mtest port( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end component; begin mtest_map: mtest port map( clk => clk, nreset => reset_n, wr_en => wr_enable, rd_en => rd_enable, address => dcs_busBadd(7 downto 0), data_in => dcs_busBdata_in, data_out => dcs_busBdata_out ); --dcs_busBdata_out <= data_outs; siu_bg <= '0'; rd_enable <= not(we_dcs); wr_enable <= we_dcs; -- to be used if checking two cycle read/write: --dcs_bg <= '1'; -- Used to test arbitration and wait states: p_arbitration: process (clk, reset_n) begin if reset_n = '0' then dcs_bg <= '1'; data_outs <= (others => '0'); elsif rising_edge(clk) then if (dcs_br = '1') then dcs_bg <= '1'; else dcs_bg<= '0'; end if; end if; end process p_arbitration; end arch; -------------------------------------------------------------------------------- -- Company: <Name> -- -- File: mtest.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- <Description here> -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: <Name> -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity mtest is port ( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end mtest; architecture arch of mtest is -- signal, component etc. declarations type memory IS ARRAY (0 TO 31) of std_logic_vector(31 DOWNTO 0); --type memory IS ARRAY (31 DOWNTO 0) of std_logic_vector; signal myram: memory; --attribute ram_init_file: STRING; --attribute ram_init_file OF myram: SIGNAL IS "ram_contents.mif"; begin -- generation of data_out process(clk,nreset) begin if (nreset='0') then data_out <= x"0000_0000"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- data_out <= x"0000_0000"; -- elsif(rd_en='1') then if(rd_en='1') then data_out <= myram(to_integer(unsigned(address))); end if; end if; end process; -- writing data to memory process(clk,nreset) begin if (nreset='0') then myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; -- elsif(wr_en='1') then if (wr_en='1') then myram(to_integer(unsigned(address))) <= data_in; end if; end if; end process; end arch; [[Category:Mikroelektronikk]] f4593c6e108d9facab7deb4816361e9a713aaa06 1961 1960 2013-09-30T09:13:38Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files which are included at the bottom of the page. Save the files with the names specified in the text. The files can be included by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). Copy the following to the User.bfm in your project, located under ''Files'' and ''simulation''. #=========================================================== # Enter your BFM commands in this file. # # Syntax: # ------- # # memmap resource_name base_address; # # write width resource_name byte_offset data; # read width resource_name byte_offset; # readcheck width resource_name byte_offset data; # #=========================================================== #include "subsystem.bfm" procedure user_main; # perform subsystem initialization routine # call subsystem_init; # add your BFM commands below: memmap apb_to_dcs_0 0x50000000; write w apb_to_dcs_0 0x0 0x12345678; write w apb_to_dcs_0 0x4 0xBEEFFACE; write w apb_to_dcs_0 0x8 0xABCDEF12; write w apb_to_dcs_0 0xC 0x44556622; readcheck w apb_to_dcs_0 0x0 0x12345678; readcheck w apb_to_dcs_0 0x4 0xBEEFFACE; readcheck w apb_to_dcs_0 0x8 0xABCDEF12; readcheck w apb_to_dcs_0 0xC 0x44556622; write w apb_to_dcs_0 0x10 0x98765432; write w apb_to_dcs_0 0x14 0xABBABABE; write w apb_to_dcs_0 0x18 0x12345ABC; write w apb_to_dcs_0 0x1C 0xDEADBEEF; readcheck w apb_to_dcs_0 0x10 0x98765432; readcheck w apb_to_dcs_0 0x14 0xABBABABE; readcheck w apb_to_dcs_0 0x18 0x12345ABC; readcheck w apb_to_dcs_0 0x1C 0xDEADBEEF; return Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> ------------------------------------------------------------------------------- -- Title : APB_to_DCS -- Project : RCU2 ------------------------------------------------------------------------------- -- File : apb_to_dcs.vhd -- Last edited by : Christian Torgersen -- Last update : 30.09.2013 - 09:26 -- Current Revision : 1.0 ------------------------------------------------------------------------------- -- Description : Mapping between AMBA APB and DCS bus. ------------------------------------------------------------------------------- -- Revision History : ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway -- This file has been written by Christian Torgersen -- Christian.torgersen@student.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; library work; use work.dcs_interface_pkg.all; entity apb_to_dcs is port( --APB input control signals penable : in std_logic; -- APB enable signal. Asserted high on second pulse psel : in std_logic; -- APB slave select from master pwrite : in std_logic; -- APB direction setting --APB input and addr paddr : in std_logic_vector(31 downto 0); -- APB address pwdata : in std_logic_vector(31 downto 0); -- APB write data --APB output signals prdata : out std_logic_vector(31 downto 0); -- APB read data pready : out std_logic; -- APB hold signal, for read/write more than 2 cycles pslverr : out std_logic; -- APB slave error signal clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity reset_from_siu : in std_logic; -- asynch reset from SIU, positive polarity --internal resets global_reset : out std_logic; -- global reset, positive polarity rcu_reset : out std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : out std_logic; -- reset for FEC, positive polarity --DCS bus signals we_dcs : out std_logic; -- write enable to the internal modules dcs_busBadd : out std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : out std_logic; -- interrupt in case DCS needs bus dcs_bg : in std_logic; -- dcs bus grant from arbiter dcs_br : out std_logic; -- dcs bus request to arbiter siu_bg : in std_logic -- siu bus grant from arbiter ); end apb_to_dcs; architecture arc of apb_to_dcs is --signal declarations type state is (s_idle, s_wait_for_grant, s_grant, s_error); signal current_state, next_state : state; -- signal resetting : std_logic; -- high when the resetting addresses are received, only used by dcs_addr signal timeout :std_logic; signal timeout_cnt :std_logic_vector(6 downto 0); signal timeout_cnt_en :std_logic; signal we_dcs_i :std_logic; begin --combinatorics timeout <= timeout_cnt(6); we_dcs <= we_dcs_i; dcs_br <= '1' when (psel = '1'and (next_state = s_wait_for_grant or next_state = s_grant)) else '0'; dcs_busBadd <= paddr(15 downto 0); --linking between APB and dcs addresses dcs_busBdata_out <= pwdata when (pwrite='1' and dcs_bg= '1') else (others => '0'); -- APB to DCS data prdata <= dcs_busBdata_in when (pwrite ='0' and dcs_bg= '1') else (others => '0'); -- DCS to APB data -- purpose: timeout counter for transaction p_timeout_cnt: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt <= (others => '0'); elsif rising_edge(clk) then if (timeout_cnt_en = '1') then timeout_cnt <= timeout_cnt + 1; else timeout_cnt <= (others => '0'); end if; end if; end process p_timeout_cnt; -- purpose: state machine driver p_state_driver: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then current_state <= s_idle; elsif rising_edge(clk) then current_state <= next_state; end if; end process p_state_driver; --purpose: set next state p_next_state: process(current_state, dcs_bg, timeout, psel, penable) begin case current_state is when s_idle => if (dcs_bg = '1' and psel = '1' and penable = '0') then -- giving two cycle read/write possibility next_state <= s_grant; elsif (dcs_bg = '0' and psel = '1' and penable = '0') then --Three or more cycle read/write next_state <= s_wait_for_grant; else next_state <= s_idle; end if; when s_wait_for_grant => if (dcs_bg = '1') then next_state <= s_grant; elsif (timeout = '1') then next_state <= s_error; else next_state <= s_wait_for_grant; end if; when s_grant => next_state <= s_idle; when s_error => next_state <= s_idle; when others => next_state <= s_idle; end case; end process p_next_state; -- purpose: set outputs of module and internal signals p_output: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt_en <= '0'; we_dcs_i <= '0'; pslverr <= '0'; pready <= '1'; elsif rising_edge(clk) then --defaults case current_state is when s_idle => pslverr <= '0'; timeout_cnt_en <= '0'; when s_wait_for_grant => when s_grant => we_dcs_i <= '0'; pready <= '1'; when s_error => pslverr <= '1'; pready <= '1'; timeout_cnt_en <= '0'; when others => --defaults end case; case next_state is when s_idle => pready <= '1'; when s_wait_for_grant => timeout_cnt_en <= '1'; pready <= '0'; when s_grant => timeout_cnt_en <= '0'; pready <= '1'; we_dcs_i <= pwrite; when others => end case; end if ; end process p_output; --purpose: resets p_reset : process(clk, reset_n) begin if (reset_n = '0') then global_reset <= '1'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '1'; fec_reset <= '1'; elsif rising_edge(clk) then global_reset <= '0'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '0'; fec_reset <= '0'; if (we_dcs_i = '1') then case (paddr(15 downto 0)) is when c_global_reset => global_reset <= '1'; when c_rcu_reset => rcu_reset <= '1'; when c_fec_reset => fec_reset <= '1'; when others => -- do nothing end case; end if; end if; end process p_reset; --Purpose: Set up bus interrupt p_bus_int: process (clk, reset_n, reset_from_siu) begin if( reset_n = '0' or reset_from_siu = '1') then dcs_bi <= '0'; elsif (rising_edge(clk)) then if(siu_bg = '0' or dcs_bg = '1') then --do not interrupt if we have grant dcs_bi <= '0'; elsif (paddr (15 downto 0) = c_arbiter_irq) then dcs_bi <= '1'; end if; end if; end process p_bus_int; end architecture arc; ------------------------------------------------------------------------------- -- Title : DCS interface Package -- Project : RCU DCS interface ------------------------------------------------------------------------------- -- File : $RCSfile: dcs_interface_pkg.vhd,v $ -- Last edited by : $Author: alme $ -- Last update : $Date: 2008/02/15 12:23:43 $ -- Current Revision : $Revision: 1.4 $ ------------------------------------------------------------------------------- -- Description : Constant and function library for RCU Trigger Receiver -- design ------------------------------------------------------------------------------- -- Revision History : -- http://portal1.ift.uib.no/cgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway, 2005 -- This file has been written by Johan Alme -- Johan.Alme@ift.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; package dcs_interface_pkg is -- address information (this should be moved to a global adress mapping definition file.) -- memory spaces. -- Safety module address. Always ack these. constant c_MSM_space : std_logic_vector(3 downto 0):=X"8"; -- Actel space should NEVER be acked constant c_Actel_space : std_logic_vector(3 downto 0):=X"B"; -- treat as normal except for the subadresses 0xA00 and 0xA01 that should not be acked. constant c_trigger_space : std_logic_vector(3 downto 0):=X"4"; -- sub adresses -- belongs to trigger space. The two addresses are defined on the DCS board and should not be acked. constant c_dcsSetBunchReset : std_logic_vector(11 downto 0):= X"A00"; constant c_dcsSetEventReset : std_logic_vector(11 downto 0):= X"A01"; constant c_global_reset : std_logic_vector(15 downto 0):= X"5300"; constant c_fec_reset : std_logic_vector(15 downto 0):= X"5301"; constant c_rcu_reset : std_logic_vector(15 downto 0):= X"5302"; constant c_arbiter_irq : std_logic_vector(15 downto 0):= X"5310"; -- interrupts SIU grant constant c_grant : std_logic_vector(15 downto 0):= X"5311"; -- grant information given --Constant defining mem mapped mode on which the interface should be active constant c_memMappedMode0 : std_logic_vector(1 downto 0) := "00"; constant c_memMappedMode1 : std_logic_vector(1 downto 0) := "11"; end package dcs_interface_pkg; -------------------------------------------------------------------------------- -- Company: University of Bergen -- -- File: DCS_test.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- Component used to test functionality of apb_to_dcs bridge -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: Christian Torgersen -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity DCS_test is port ( clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity global_reset : in std_logic; -- global reset, positive polarity rcu_reset : in std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : in std_logic; -- reset for FEC, positive polarity we_dcs : in std_logic; -- write enable to the internal modules dcs_busBadd : in std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : in std_logic; -- interrupt in case DCS needs bus dcs_bg : out std_logic; -- dcs bus grant from arbiter dcs_br : in std_logic; -- dcs bus request to arbiter siu_bg : out std_logic -- siu bus grant from arbiter ); end DCS_test; architecture arch of DCS_test is -- signal, component etc. declarations signal data_outs :std_logic_vector(31 DOWNTO 0); signal wr_enable, rd_enable : std_logic; component mtest port( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end component; begin mtest_map: mtest port map( clk => clk, nreset => reset_n, wr_en => wr_enable, rd_en => rd_enable, address => dcs_busBadd(7 downto 0), data_in => dcs_busBdata_in, data_out => dcs_busBdata_out ); --dcs_busBdata_out <= data_outs; siu_bg <= '0'; rd_enable <= not(we_dcs); wr_enable <= we_dcs; -- to be used if checking two cycle read/write: --dcs_bg <= '1'; -- Used to test arbitration and wait states: p_arbitration: process (clk, reset_n) begin if reset_n = '0' then dcs_bg <= '1'; data_outs <= (others => '0'); elsif rising_edge(clk) then if (dcs_br = '1') then dcs_bg <= '1'; else dcs_bg<= '0'; end if; end if; end process p_arbitration; end arch; -------------------------------------------------------------------------------- -- Company: <Name> -- -- File: mtest.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- <Description here> -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: <Name> -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity mtest is port ( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end mtest; architecture arch of mtest is -- signal, component etc. declarations type memory IS ARRAY (0 TO 31) of std_logic_vector(31 DOWNTO 0); --type memory IS ARRAY (31 DOWNTO 0) of std_logic_vector; signal myram: memory; --attribute ram_init_file: STRING; --attribute ram_init_file OF myram: SIGNAL IS "ram_contents.mif"; begin -- generation of data_out process(clk,nreset) begin if (nreset='0') then data_out <= x"0000_0000"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- data_out <= x"0000_0000"; -- elsif(rd_en='1') then if(rd_en='1') then data_out <= myram(to_integer(unsigned(address))); end if; end if; end process; -- writing data to memory process(clk,nreset) begin if (nreset='0') then myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; -- elsif(wr_en='1') then if (wr_en='1') then myram(to_integer(unsigned(address))) <= data_in; end if; end if; end process; end arch; [[Category:Mikroelektronikk]] 3add844a8d06b9cdca9361a755bc24a74eab49f3 1962 1961 2013-09-30T09:14:13Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files which are included at the bottom of the page. Save the files with the names specified in the text. The files can be included by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). Copy the following to the User.bfm in your project, located under ''Files'' and ''simulation''. #=========================================================== # Enter your BFM commands in this file. # # Syntax: # ------- # # memmap resource_name base_address; # # write width resource_name byte_offset data; # read width resource_name byte_offset; # readcheck width resource_name byte_offset data; # #=========================================================== #include "subsystem.bfm" procedure user_main; # perform subsystem initialization routine # call subsystem_init; # add your BFM commands below: memmap apb_to_dcs_0 0x50000000; write w apb_to_dcs_0 0x0 0x12345678; write w apb_to_dcs_0 0x4 0xBEEFFACE; write w apb_to_dcs_0 0x8 0xABCDEF12; write w apb_to_dcs_0 0xC 0x44556622; readcheck w apb_to_dcs_0 0x0 0x12345678; readcheck w apb_to_dcs_0 0x4 0xBEEFFACE; readcheck w apb_to_dcs_0 0x8 0xABCDEF12; readcheck w apb_to_dcs_0 0xC 0x44556622; write w apb_to_dcs_0 0x10 0x98765432; write w apb_to_dcs_0 0x14 0xABBABABE; write w apb_to_dcs_0 0x18 0x12345ABC; write w apb_to_dcs_0 0x1C 0xDEADBEEF; readcheck w apb_to_dcs_0 0x10 0x98765432; readcheck w apb_to_dcs_0 0x14 0xABBABABE; readcheck w apb_to_dcs_0 0x18 0x12345ABC; readcheck w apb_to_dcs_0 0x1C 0xDEADBEEF; return Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied in the .zip. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file, Fabric_top.io, by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the main.c supplied in the .zip file. The application will then write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> ------------------------------------------------------------------------------- -- Title : APB_to_DCS -- Project : RCU2 ------------------------------------------------------------------------------- -- File : apb_to_dcs.vhd -- Last edited by : Christian Torgersen -- Last update : 30.09.2013 - 09:26 -- Current Revision : 1.0 ------------------------------------------------------------------------------- -- Description : Mapping between AMBA APB and DCS bus. ------------------------------------------------------------------------------- -- Revision History : ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway -- This file has been written by Christian Torgersen -- Christian.torgersen@student.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; library work; use work.dcs_interface_pkg.all; entity apb_to_dcs is port( --APB input control signals penable : in std_logic; -- APB enable signal. Asserted high on second pulse psel : in std_logic; -- APB slave select from master pwrite : in std_logic; -- APB direction setting --APB input and addr paddr : in std_logic_vector(31 downto 0); -- APB address pwdata : in std_logic_vector(31 downto 0); -- APB write data --APB output signals prdata : out std_logic_vector(31 downto 0); -- APB read data pready : out std_logic; -- APB hold signal, for read/write more than 2 cycles pslverr : out std_logic; -- APB slave error signal clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity reset_from_siu : in std_logic; -- asynch reset from SIU, positive polarity --internal resets global_reset : out std_logic; -- global reset, positive polarity rcu_reset : out std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : out std_logic; -- reset for FEC, positive polarity --DCS bus signals we_dcs : out std_logic; -- write enable to the internal modules dcs_busBadd : out std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : out std_logic; -- interrupt in case DCS needs bus dcs_bg : in std_logic; -- dcs bus grant from arbiter dcs_br : out std_logic; -- dcs bus request to arbiter siu_bg : in std_logic -- siu bus grant from arbiter ); end apb_to_dcs; architecture arc of apb_to_dcs is --signal declarations type state is (s_idle, s_wait_for_grant, s_grant, s_error); signal current_state, next_state : state; -- signal resetting : std_logic; -- high when the resetting addresses are received, only used by dcs_addr signal timeout :std_logic; signal timeout_cnt :std_logic_vector(6 downto 0); signal timeout_cnt_en :std_logic; signal we_dcs_i :std_logic; begin --combinatorics timeout <= timeout_cnt(6); we_dcs <= we_dcs_i; dcs_br <= '1' when (psel = '1'and (next_state = s_wait_for_grant or next_state = s_grant)) else '0'; dcs_busBadd <= paddr(15 downto 0); --linking between APB and dcs addresses dcs_busBdata_out <= pwdata when (pwrite='1' and dcs_bg= '1') else (others => '0'); -- APB to DCS data prdata <= dcs_busBdata_in when (pwrite ='0' and dcs_bg= '1') else (others => '0'); -- DCS to APB data -- purpose: timeout counter for transaction p_timeout_cnt: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt <= (others => '0'); elsif rising_edge(clk) then if (timeout_cnt_en = '1') then timeout_cnt <= timeout_cnt + 1; else timeout_cnt <= (others => '0'); end if; end if; end process p_timeout_cnt; -- purpose: state machine driver p_state_driver: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then current_state <= s_idle; elsif rising_edge(clk) then current_state <= next_state; end if; end process p_state_driver; --purpose: set next state p_next_state: process(current_state, dcs_bg, timeout, psel, penable) begin case current_state is when s_idle => if (dcs_bg = '1' and psel = '1' and penable = '0') then -- giving two cycle read/write possibility next_state <= s_grant; elsif (dcs_bg = '0' and psel = '1' and penable = '0') then --Three or more cycle read/write next_state <= s_wait_for_grant; else next_state <= s_idle; end if; when s_wait_for_grant => if (dcs_bg = '1') then next_state <= s_grant; elsif (timeout = '1') then next_state <= s_error; else next_state <= s_wait_for_grant; end if; when s_grant => next_state <= s_idle; when s_error => next_state <= s_idle; when others => next_state <= s_idle; end case; end process p_next_state; -- purpose: set outputs of module and internal signals p_output: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt_en <= '0'; we_dcs_i <= '0'; pslverr <= '0'; pready <= '1'; elsif rising_edge(clk) then --defaults case current_state is when s_idle => pslverr <= '0'; timeout_cnt_en <= '0'; when s_wait_for_grant => when s_grant => we_dcs_i <= '0'; pready <= '1'; when s_error => pslverr <= '1'; pready <= '1'; timeout_cnt_en <= '0'; when others => --defaults end case; case next_state is when s_idle => pready <= '1'; when s_wait_for_grant => timeout_cnt_en <= '1'; pready <= '0'; when s_grant => timeout_cnt_en <= '0'; pready <= '1'; we_dcs_i <= pwrite; when others => end case; end if ; end process p_output; --purpose: resets p_reset : process(clk, reset_n) begin if (reset_n = '0') then global_reset <= '1'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '1'; fec_reset <= '1'; elsif rising_edge(clk) then global_reset <= '0'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '0'; fec_reset <= '0'; if (we_dcs_i = '1') then case (paddr(15 downto 0)) is when c_global_reset => global_reset <= '1'; when c_rcu_reset => rcu_reset <= '1'; when c_fec_reset => fec_reset <= '1'; when others => -- do nothing end case; end if; end if; end process p_reset; --Purpose: Set up bus interrupt p_bus_int: process (clk, reset_n, reset_from_siu) begin if( reset_n = '0' or reset_from_siu = '1') then dcs_bi <= '0'; elsif (rising_edge(clk)) then if(siu_bg = '0' or dcs_bg = '1') then --do not interrupt if we have grant dcs_bi <= '0'; elsif (paddr (15 downto 0) = c_arbiter_irq) then dcs_bi <= '1'; end if; end if; end process p_bus_int; end architecture arc; ------------------------------------------------------------------------------- -- Title : DCS interface Package -- Project : RCU DCS interface ------------------------------------------------------------------------------- -- File : $RCSfile: dcs_interface_pkg.vhd,v $ -- Last edited by : $Author: alme $ -- Last update : $Date: 2008/02/15 12:23:43 $ -- Current Revision : $Revision: 1.4 $ ------------------------------------------------------------------------------- -- Description : Constant and function library for RCU Trigger Receiver -- design ------------------------------------------------------------------------------- -- Revision History : -- http://portal1.ift.uib.no/cgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway, 2005 -- This file has been written by Johan Alme -- Johan.Alme@ift.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; package dcs_interface_pkg is -- address information (this should be moved to a global adress mapping definition file.) -- memory spaces. -- Safety module address. Always ack these. constant c_MSM_space : std_logic_vector(3 downto 0):=X"8"; -- Actel space should NEVER be acked constant c_Actel_space : std_logic_vector(3 downto 0):=X"B"; -- treat as normal except for the subadresses 0xA00 and 0xA01 that should not be acked. constant c_trigger_space : std_logic_vector(3 downto 0):=X"4"; -- sub adresses -- belongs to trigger space. The two addresses are defined on the DCS board and should not be acked. constant c_dcsSetBunchReset : std_logic_vector(11 downto 0):= X"A00"; constant c_dcsSetEventReset : std_logic_vector(11 downto 0):= X"A01"; constant c_global_reset : std_logic_vector(15 downto 0):= X"5300"; constant c_fec_reset : std_logic_vector(15 downto 0):= X"5301"; constant c_rcu_reset : std_logic_vector(15 downto 0):= X"5302"; constant c_arbiter_irq : std_logic_vector(15 downto 0):= X"5310"; -- interrupts SIU grant constant c_grant : std_logic_vector(15 downto 0):= X"5311"; -- grant information given --Constant defining mem mapped mode on which the interface should be active constant c_memMappedMode0 : std_logic_vector(1 downto 0) := "00"; constant c_memMappedMode1 : std_logic_vector(1 downto 0) := "11"; end package dcs_interface_pkg; -------------------------------------------------------------------------------- -- Company: University of Bergen -- -- File: DCS_test.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- Component used to test functionality of apb_to_dcs bridge -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: Christian Torgersen -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity DCS_test is port ( clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity global_reset : in std_logic; -- global reset, positive polarity rcu_reset : in std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : in std_logic; -- reset for FEC, positive polarity we_dcs : in std_logic; -- write enable to the internal modules dcs_busBadd : in std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : in std_logic; -- interrupt in case DCS needs bus dcs_bg : out std_logic; -- dcs bus grant from arbiter dcs_br : in std_logic; -- dcs bus request to arbiter siu_bg : out std_logic -- siu bus grant from arbiter ); end DCS_test; architecture arch of DCS_test is -- signal, component etc. declarations signal data_outs :std_logic_vector(31 DOWNTO 0); signal wr_enable, rd_enable : std_logic; component mtest port( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end component; begin mtest_map: mtest port map( clk => clk, nreset => reset_n, wr_en => wr_enable, rd_en => rd_enable, address => dcs_busBadd(7 downto 0), data_in => dcs_busBdata_in, data_out => dcs_busBdata_out ); --dcs_busBdata_out <= data_outs; siu_bg <= '0'; rd_enable <= not(we_dcs); wr_enable <= we_dcs; -- to be used if checking two cycle read/write: --dcs_bg <= '1'; -- Used to test arbitration and wait states: p_arbitration: process (clk, reset_n) begin if reset_n = '0' then dcs_bg <= '1'; data_outs <= (others => '0'); elsif rising_edge(clk) then if (dcs_br = '1') then dcs_bg <= '1'; else dcs_bg<= '0'; end if; end if; end process p_arbitration; end arch; -------------------------------------------------------------------------------- -- Company: <Name> -- -- File: mtest.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- <Description here> -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: <Name> -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity mtest is port ( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end mtest; architecture arch of mtest is -- signal, component etc. declarations type memory IS ARRAY (0 TO 31) of std_logic_vector(31 DOWNTO 0); --type memory IS ARRAY (31 DOWNTO 0) of std_logic_vector; signal myram: memory; --attribute ram_init_file: STRING; --attribute ram_init_file OF myram: SIGNAL IS "ram_contents.mif"; begin -- generation of data_out process(clk,nreset) begin if (nreset='0') then data_out <= x"0000_0000"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- data_out <= x"0000_0000"; -- elsif(rd_en='1') then if(rd_en='1') then data_out <= myram(to_integer(unsigned(address))); end if; end if; end process; -- writing data to memory process(clk,nreset) begin if (nreset='0') then myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; -- elsif(wr_en='1') then if (wr_en='1') then myram(to_integer(unsigned(address))) <= data_in; end if; end if; end process; end arch; [[Category:Mikroelektronikk]] 791677d0732faaaed6128ddba324c01238e3d180 1963 1962 2013-09-30T09:30:19Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files which are included at the bottom of the page. Save the files with the names specified in the text. The files can be included by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). Copy the following to the User.bfm in your project, located under ''Files'' and ''simulation''. #=========================================================== # Enter your BFM commands in this file. # # Syntax: # ------- # # memmap resource_name base_address; # # write width resource_name byte_offset data; # read width resource_name byte_offset; # readcheck width resource_name byte_offset data; # #=========================================================== #include "subsystem.bfm" procedure user_main; # perform subsystem initialization routine # call subsystem_init; # add your BFM commands below: memmap apb_to_dcs_0 0x50000000; write w apb_to_dcs_0 0x0 0x12345678; write w apb_to_dcs_0 0x4 0xBEEFFACE; write w apb_to_dcs_0 0x8 0xABCDEF12; write w apb_to_dcs_0 0xC 0x44556622; readcheck w apb_to_dcs_0 0x0 0x12345678; readcheck w apb_to_dcs_0 0x4 0xBEEFFACE; readcheck w apb_to_dcs_0 0x8 0xABCDEF12; readcheck w apb_to_dcs_0 0xC 0x44556622; write w apb_to_dcs_0 0x10 0x98765432; write w apb_to_dcs_0 0x14 0xABBABABE; write w apb_to_dcs_0 0x18 0x12345ABC; write w apb_to_dcs_0 0x1C 0xDEADBEEF; readcheck w apb_to_dcs_0 0x10 0x98765432; readcheck w apb_to_dcs_0 0x14 0xABBABABE; readcheck w apb_to_dcs_0 0x18 0x12345ABC; readcheck w apb_to_dcs_0 0x1C 0xDEADBEEF; return Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied below. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. quietly set ACTELLIBNAME SmartFusion2 quietly set PROJECT_DIR "C:/Microsemi/Projects/APB_custom_peripheral" source "${PROJECT_DIR}/simulation/CompileDssBfm.tcl";source "${PROJECT_DIR}/simulation/bfmtovec_compile.tcl"; if {[file exists presynth/_info]} { echo "INFO: Simulation library presynth already exists" } else { vlib presynth } vmap presynth presynth vmap SmartFusion2 "C:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" if {[file exists COREAPB3_LIB/_info]} { echo "INFO: Simulation library COREAPB3_LIB already exists" } else { vlib COREAPB3_LIB } vmap COREAPB3_LIB "COREAPB3_LIB" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral_MSS/APB_custom_peripheral_MSS.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/dcs_interface_pkg.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/apb_to_dcs.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/mtest.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/DCS_test.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/FCCC_0/APB_custom_peripheral_FCCC_0_FCCC.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/OSC_0/APB_custom_peripheral_OSC_0_OSC.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_muxptob3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_iaddr_reg.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/components.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/APB_custom_peripheral.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/testbench.vhd" vsim -L SmartFusion2 -L presynth -L COREAPB3_LIB -t 1fs presynth.testbench add wave \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PREADY \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSLVERR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE_PLL_LOCK \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_F2M \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PADDR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PENABLE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSEL \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PRDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWRITE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_M2F add wave \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/penable \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/psel \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwrite \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/paddr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/prdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pslverr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/clk \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_n \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_from_siu \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/global_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/rcu_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/fec_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pready \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/siu_bg add wave \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/siu_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/wr_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/rd_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/address \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/myram run 150 us Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file supplied below. Name it Fabric_top.io. # Microsemi I/O Physical Design Constraints file # Auto Generated User I/O Constraints file # Version: v11.1 11.1.0.14 # Family: SmartFusion2 , Die: M2S050T_ES , Package: 896 FBGA # Date generated: Fri Sep 20 10:03:27 2013 # # User Locked I/O Bank Settings # set_iobank Bank0 -vcci 1.80 -fixed yes set_iobank Bank1 -vcci 3.30 -fixed yes set_iobank Bank2 -vcci 3.30 -fixed yes set_iobank Bank3 -vcci 3.30 -fixed yes set_iobank Bank4 -vcci 3.30 -fixed yes set_iobank Bank8 -vcci 3.30 -fixed yes # # Unlocked I/O Bank Settings # The I/O Bank Settings can be locked by directly editing this file # or by making changes in the I/O Attribute Editor # # # User Locked I/O settings # set_io MMUART_0_RXD -pinname L23 -fixed yes set_io MMUART_0_TXD -pinname H27 -fixed yes set_io MSS_RESET_N_F2M \ -pinname F30 \ -fixed yes \ -RES_PULL Up \ -DIRECTION INPUT set_io GPIO_0_M2F \ -pinname G30 \ -fixed yes \ -DIRECTION OUTPUT The file is imported by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the following: #include "unistd.h" #include <stdio.h> #include "drivers/mss_uart/mss_uart.h" #include "drivers/mss_gpio/mss_gpio.h" //Initialize registers to read/write #define APB_TO_DCS_0 0x50000000U #define MEM1 (*(volatile int32_t *) 0x50000000) #define MEM2 (*(volatile int32_t *) 0x50000004) #define MEM3 (*(volatile int32_t *) 0x50000008) #define MEM4 (*(volatile int32_t *) 0x5000000C) #define MEM5 (*(volatile int32_t *) 0x50000010) #define MEM6 (*(volatile int32_t *) 0x50000014) #define MEM7 (*(volatile int32_t *) 0x50000018) #define MEM8 (*(volatile int32_t *) 0x5000001C) //Define a constant delay value #define DELAY_LOAD_VALUE 0x00080000 //about half a second int main() { /* * Initialize MSS GPIOs. */ MSS_GPIO_init(); /* * Configure MSS GPIO pin */ MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); /* * Set initial state of GPIO pin */ MSS_GPIO_set_output(MSS_GPIO_0,0); //Using UART 0 mss_uart_instance_t * const gp_my_uart = &g_mss_uart0; /* * Using one delay to write and one delay to read */ volatile int32_t delay_count_1 = 0; volatile int32_t delay_count_2 = 0; delay_count_1 = DELAY_LOAD_VALUE/2; delay_count_2 = DELAY_LOAD_VALUE; /* * Variable to read value from memory to set led */ uint8_t led; /* * Incrementing value to be written to memory */ int32_t i = 0; /* * Variables to hold values read from memory */ int32_t m1,m2,m3,m4,m5,m6,m7,m8; /* * data to be sent on UART, holding chopped memory data */ uint8_t data[4]; /*-------------------------------------------------------------------------- * Initialize and configure UART. */ MSS_UART_init(gp_my_uart, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT); MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r*******************Hello World*********************\n\r"); //Always while( 1 ) { -- delay_count_1; -- delay_count_2; /* * Updating memory values */ if (delay_count_1 <= 0) { delay_count_1 = DELAY_LOAD_VALUE; MEM1 = i; MEM2 = i+1; MEM3 = i+2; MEM4 = i+3; MEM5 = i+4; MEM6 = i+5; MEM7 = i+6; MEM8 = i+7; } /* * Reading memory values */ if (delay_count_2 <= 0) { delay_count_2 = DELAY_LOAD_VALUE; m1 = MEM1; if(m1 != i) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 1 is different from expected! *****\n\r"); } /* * Chopping data from memory, sending it to UART. * Reading hex/binary values from console */ data[3] = m1; data[2] = m1 >>8; data[1] = m1 >>16; data[0] = m1 >>24; MSS_UART_polled_tx(gp_my_uart, data, sizeof(data)); m2 = MEM2; if(m2 != i+1) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 2 is different from expected! *****\n\r"); } m3 = MEM3; if(m3 != i+2) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 3 is different from expected! *****\n\r"); } m4 = MEM4; if(m4 != i+3) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 4 is different from expected! *****\n\r"); } m5 = MEM5; if(m5 != i+4) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 5 is different from expected! *****\n\r"); } m6 = MEM6; if(m6 != i+5) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 6 is different from expected! *****\n\r"); } m7 = MEM7; if(m7 != i+6) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 7 is different from expected! *****\n\r"); } m8 = MEM8; if(m8 != i+7) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 8 is different from expected! *****\n\r"); } /* * Read last bit of current value of m1 and set GPIO (led) according to the bit value * Bit should toggle for every read cycle */ led = m1 & 0x00000001; MSS_GPIO_set_output(MSS_GPIO_0,led); ++i; } } } The application will write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> ------------------------------------------------------------------------------- -- Title : APB_to_DCS -- Project : RCU2 ------------------------------------------------------------------------------- -- File : apb_to_dcs.vhd -- Last edited by : Christian Torgersen -- Last update : 30.09.2013 - 09:26 -- Current Revision : 1.0 ------------------------------------------------------------------------------- -- Description : Mapping between AMBA APB and DCS bus. ------------------------------------------------------------------------------- -- Revision History : ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway -- This file has been written by Christian Torgersen -- Christian.torgersen@student.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; library work; use work.dcs_interface_pkg.all; entity apb_to_dcs is port( --APB input control signals penable : in std_logic; -- APB enable signal. Asserted high on second pulse psel : in std_logic; -- APB slave select from master pwrite : in std_logic; -- APB direction setting --APB input and addr paddr : in std_logic_vector(31 downto 0); -- APB address pwdata : in std_logic_vector(31 downto 0); -- APB write data --APB output signals prdata : out std_logic_vector(31 downto 0); -- APB read data pready : out std_logic; -- APB hold signal, for read/write more than 2 cycles pslverr : out std_logic; -- APB slave error signal clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity reset_from_siu : in std_logic; -- asynch reset from SIU, positive polarity --internal resets global_reset : out std_logic; -- global reset, positive polarity rcu_reset : out std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : out std_logic; -- reset for FEC, positive polarity --DCS bus signals we_dcs : out std_logic; -- write enable to the internal modules dcs_busBadd : out std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : out std_logic; -- interrupt in case DCS needs bus dcs_bg : in std_logic; -- dcs bus grant from arbiter dcs_br : out std_logic; -- dcs bus request to arbiter siu_bg : in std_logic -- siu bus grant from arbiter ); end apb_to_dcs; architecture arc of apb_to_dcs is --signal declarations type state is (s_idle, s_wait_for_grant, s_grant, s_error); signal current_state, next_state : state; -- signal resetting : std_logic; -- high when the resetting addresses are received, only used by dcs_addr signal timeout :std_logic; signal timeout_cnt :std_logic_vector(6 downto 0); signal timeout_cnt_en :std_logic; signal we_dcs_i :std_logic; begin --combinatorics timeout <= timeout_cnt(6); we_dcs <= we_dcs_i; dcs_br <= '1' when (psel = '1'and (next_state = s_wait_for_grant or next_state = s_grant)) else '0'; dcs_busBadd <= paddr(15 downto 0); --linking between APB and dcs addresses dcs_busBdata_out <= pwdata when (pwrite='1' and dcs_bg= '1') else (others => '0'); -- APB to DCS data prdata <= dcs_busBdata_in when (pwrite ='0' and dcs_bg= '1') else (others => '0'); -- DCS to APB data -- purpose: timeout counter for transaction p_timeout_cnt: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt <= (others => '0'); elsif rising_edge(clk) then if (timeout_cnt_en = '1') then timeout_cnt <= timeout_cnt + 1; else timeout_cnt <= (others => '0'); end if; end if; end process p_timeout_cnt; -- purpose: state machine driver p_state_driver: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then current_state <= s_idle; elsif rising_edge(clk) then current_state <= next_state; end if; end process p_state_driver; --purpose: set next state p_next_state: process(current_state, dcs_bg, timeout, psel, penable) begin case current_state is when s_idle => if (dcs_bg = '1' and psel = '1' and penable = '0') then -- giving two cycle read/write possibility next_state <= s_grant; elsif (dcs_bg = '0' and psel = '1' and penable = '0') then --Three or more cycle read/write next_state <= s_wait_for_grant; else next_state <= s_idle; end if; when s_wait_for_grant => if (dcs_bg = '1') then next_state <= s_grant; elsif (timeout = '1') then next_state <= s_error; else next_state <= s_wait_for_grant; end if; when s_grant => next_state <= s_idle; when s_error => next_state <= s_idle; when others => next_state <= s_idle; end case; end process p_next_state; -- purpose: set outputs of module and internal signals p_output: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt_en <= '0'; we_dcs_i <= '0'; pslverr <= '0'; pready <= '1'; elsif rising_edge(clk) then --defaults case current_state is when s_idle => pslverr <= '0'; timeout_cnt_en <= '0'; when s_wait_for_grant => when s_grant => we_dcs_i <= '0'; pready <= '1'; when s_error => pslverr <= '1'; pready <= '1'; timeout_cnt_en <= '0'; when others => --defaults end case; case next_state is when s_idle => pready <= '1'; when s_wait_for_grant => timeout_cnt_en <= '1'; pready <= '0'; when s_grant => timeout_cnt_en <= '0'; pready <= '1'; we_dcs_i <= pwrite; when others => end case; end if ; end process p_output; --purpose: resets p_reset : process(clk, reset_n) begin if (reset_n = '0') then global_reset <= '1'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '1'; fec_reset <= '1'; elsif rising_edge(clk) then global_reset <= '0'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '0'; fec_reset <= '0'; if (we_dcs_i = '1') then case (paddr(15 downto 0)) is when c_global_reset => global_reset <= '1'; when c_rcu_reset => rcu_reset <= '1'; when c_fec_reset => fec_reset <= '1'; when others => -- do nothing end case; end if; end if; end process p_reset; --Purpose: Set up bus interrupt p_bus_int: process (clk, reset_n, reset_from_siu) begin if( reset_n = '0' or reset_from_siu = '1') then dcs_bi <= '0'; elsif (rising_edge(clk)) then if(siu_bg = '0' or dcs_bg = '1') then --do not interrupt if we have grant dcs_bi <= '0'; elsif (paddr (15 downto 0) = c_arbiter_irq) then dcs_bi <= '1'; end if; end if; end process p_bus_int; end architecture arc; ------------------------------------------------------------------------------- -- Title : DCS interface Package -- Project : RCU DCS interface ------------------------------------------------------------------------------- -- File : $RCSfile: dcs_interface_pkg.vhd,v $ -- Last edited by : $Author: alme $ -- Last update : $Date: 2008/02/15 12:23:43 $ -- Current Revision : $Revision: 1.4 $ ------------------------------------------------------------------------------- -- Description : Constant and function library for RCU Trigger Receiver -- design ------------------------------------------------------------------------------- -- Revision History : -- http://portal1.ift.uib.no/cgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway, 2005 -- This file has been written by Johan Alme -- Johan.Alme@ift.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; package dcs_interface_pkg is -- address information (this should be moved to a global adress mapping definition file.) -- memory spaces. -- Safety module address. Always ack these. constant c_MSM_space : std_logic_vector(3 downto 0):=X"8"; -- Actel space should NEVER be acked constant c_Actel_space : std_logic_vector(3 downto 0):=X"B"; -- treat as normal except for the subadresses 0xA00 and 0xA01 that should not be acked. constant c_trigger_space : std_logic_vector(3 downto 0):=X"4"; -- sub adresses -- belongs to trigger space. The two addresses are defined on the DCS board and should not be acked. constant c_dcsSetBunchReset : std_logic_vector(11 downto 0):= X"A00"; constant c_dcsSetEventReset : std_logic_vector(11 downto 0):= X"A01"; constant c_global_reset : std_logic_vector(15 downto 0):= X"5300"; constant c_fec_reset : std_logic_vector(15 downto 0):= X"5301"; constant c_rcu_reset : std_logic_vector(15 downto 0):= X"5302"; constant c_arbiter_irq : std_logic_vector(15 downto 0):= X"5310"; -- interrupts SIU grant constant c_grant : std_logic_vector(15 downto 0):= X"5311"; -- grant information given --Constant defining mem mapped mode on which the interface should be active constant c_memMappedMode0 : std_logic_vector(1 downto 0) := "00"; constant c_memMappedMode1 : std_logic_vector(1 downto 0) := "11"; end package dcs_interface_pkg; -------------------------------------------------------------------------------- -- Company: University of Bergen -- -- File: DCS_test.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- Component used to test functionality of apb_to_dcs bridge -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: Christian Torgersen -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity DCS_test is port ( clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity global_reset : in std_logic; -- global reset, positive polarity rcu_reset : in std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : in std_logic; -- reset for FEC, positive polarity we_dcs : in std_logic; -- write enable to the internal modules dcs_busBadd : in std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : in std_logic; -- interrupt in case DCS needs bus dcs_bg : out std_logic; -- dcs bus grant from arbiter dcs_br : in std_logic; -- dcs bus request to arbiter siu_bg : out std_logic -- siu bus grant from arbiter ); end DCS_test; architecture arch of DCS_test is -- signal, component etc. declarations signal data_outs :std_logic_vector(31 DOWNTO 0); signal wr_enable, rd_enable : std_logic; component mtest port( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end component; begin mtest_map: mtest port map( clk => clk, nreset => reset_n, wr_en => wr_enable, rd_en => rd_enable, address => dcs_busBadd(7 downto 0), data_in => dcs_busBdata_in, data_out => dcs_busBdata_out ); --dcs_busBdata_out <= data_outs; siu_bg <= '0'; rd_enable <= not(we_dcs); wr_enable <= we_dcs; -- to be used if checking two cycle read/write: --dcs_bg <= '1'; -- Used to test arbitration and wait states: p_arbitration: process (clk, reset_n) begin if reset_n = '0' then dcs_bg <= '1'; data_outs <= (others => '0'); elsif rising_edge(clk) then if (dcs_br = '1') then dcs_bg <= '1'; else dcs_bg<= '0'; end if; end if; end process p_arbitration; end arch; -------------------------------------------------------------------------------- -- Company: <Name> -- -- File: mtest.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- <Description here> -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: <Name> -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity mtest is port ( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end mtest; architecture arch of mtest is -- signal, component etc. declarations type memory IS ARRAY (0 TO 31) of std_logic_vector(31 DOWNTO 0); --type memory IS ARRAY (31 DOWNTO 0) of std_logic_vector; signal myram: memory; --attribute ram_init_file: STRING; --attribute ram_init_file OF myram: SIGNAL IS "ram_contents.mif"; begin -- generation of data_out process(clk,nreset) begin if (nreset='0') then data_out <= x"0000_0000"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- data_out <= x"0000_0000"; -- elsif(rd_en='1') then if(rd_en='1') then data_out <= myram(to_integer(unsigned(address))); end if; end if; end process; -- writing data to memory process(clk,nreset) begin if (nreset='0') then myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; -- elsif(wr_en='1') then if (wr_en='1') then myram(to_integer(unsigned(address))) <= data_in; end if; end if; end process; end arch; [[Category:Mikroelektronikk]] 03632b6259722d494bed9a14aa517ff0c112aeb7 1964 1963 2013-09-30T09:32:32Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files which are included at the bottom of the page. Save the files with the names specified in the text. The files can be included by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). Copy the following to the User.bfm in your project, located under ''Files'' and ''simulation''. #=========================================================== # Enter your BFM commands in this file. # # Syntax: # ------- # # memmap resource_name base_address; # # write width resource_name byte_offset data; # read width resource_name byte_offset; # readcheck width resource_name byte_offset data; # #=========================================================== #include "subsystem.bfm" procedure user_main; # perform subsystem initialization routine # call subsystem_init; # add your BFM commands below: memmap apb_to_dcs_0 0x50000000; write w apb_to_dcs_0 0x0 0x12345678; write w apb_to_dcs_0 0x4 0xBEEFFACE; write w apb_to_dcs_0 0x8 0xABCDEF12; write w apb_to_dcs_0 0xC 0x44556622; readcheck w apb_to_dcs_0 0x0 0x12345678; readcheck w apb_to_dcs_0 0x4 0xBEEFFACE; readcheck w apb_to_dcs_0 0x8 0xABCDEF12; readcheck w apb_to_dcs_0 0xC 0x44556622; write w apb_to_dcs_0 0x10 0x98765432; write w apb_to_dcs_0 0x14 0xABBABABE; write w apb_to_dcs_0 0x18 0x12345ABC; write w apb_to_dcs_0 0x1C 0xDEADBEEF; readcheck w apb_to_dcs_0 0x10 0x98765432; readcheck w apb_to_dcs_0 0x14 0xABBABABE; readcheck w apb_to_dcs_0 0x18 0x12345ABC; readcheck w apb_to_dcs_0 0x1C 0xDEADBEEF; return Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied below. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. quietly set ACTELLIBNAME SmartFusion2 quietly set PROJECT_DIR "C:/Microsemi/Projects/APB_custom_peripheral" source "${PROJECT_DIR}/simulation/CompileDssBfm.tcl";source "${PROJECT_DIR}/simulation/bfmtovec_compile.tcl"; if {[file exists presynth/_info]} { echo "INFO: Simulation library presynth already exists" } else { vlib presynth } vmap presynth presynth vmap SmartFusion2 "C:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" if {[file exists COREAPB3_LIB/_info]} { echo "INFO: Simulation library COREAPB3_LIB already exists" } else { vlib COREAPB3_LIB } vmap COREAPB3_LIB "COREAPB3_LIB" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral_MSS/APB_custom_peripheral_MSS.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/dcs_interface_pkg.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/apb_to_dcs.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/mtest.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/DCS_test.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/FCCC_0/APB_custom_peripheral_FCCC_0_FCCC.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/OSC_0/APB_custom_peripheral_OSC_0_OSC.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_muxptob3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_iaddr_reg.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/components.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/APB_custom_peripheral.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/testbench.vhd" vsim -L SmartFusion2 -L presynth -L COREAPB3_LIB -t 1fs presynth.testbench add wave \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PREADY \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSLVERR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE_PLL_LOCK \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_F2M \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PADDR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PENABLE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSEL \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PRDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWRITE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_M2F add wave \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/penable \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/psel \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwrite \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/paddr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/prdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pslverr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/clk \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_n \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_from_siu \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/global_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/rcu_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/fec_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pready \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/siu_bg add wave \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/siu_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/wr_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/rd_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/address \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/myram run 150 us Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file supplied below. Name it Fabric_top.io. # Microsemi I/O Physical Design Constraints file # Auto Generated User I/O Constraints file # Version: v11.1 11.1.0.14 # Family: SmartFusion2 , Die: M2S050T_ES , Package: 896 FBGA # Date generated: Fri Sep 20 10:03:27 2013 # # User Locked I/O Bank Settings # set_iobank Bank0 -vcci 1.80 -fixed yes set_iobank Bank1 -vcci 3.30 -fixed yes set_iobank Bank2 -vcci 3.30 -fixed yes set_iobank Bank3 -vcci 3.30 -fixed yes set_iobank Bank4 -vcci 3.30 -fixed yes set_iobank Bank8 -vcci 3.30 -fixed yes # # Unlocked I/O Bank Settings # The I/O Bank Settings can be locked by directly editing this file # or by making changes in the I/O Attribute Editor # # # User Locked I/O settings # set_io MMUART_0_RXD -pinname L23 -fixed yes set_io MMUART_0_TXD -pinname H27 -fixed yes set_io MSS_RESET_N_F2M \ -pinname F30 \ -fixed yes \ -RES_PULL Up \ -DIRECTION INPUT set_io GPIO_0_M2F \ -pinname G30 \ -fixed yes \ -DIRECTION OUTPUT The file is imported by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the following: #include "unistd.h" #include <stdio.h> #include "drivers/mss_uart/mss_uart.h" #include "drivers/mss_gpio/mss_gpio.h" //Initialize registers to read/write #define APB_TO_DCS_0 0x50000000U #define MEM1 (*(volatile int32_t *) 0x50000000) #define MEM2 (*(volatile int32_t *) 0x50000004) #define MEM3 (*(volatile int32_t *) 0x50000008) #define MEM4 (*(volatile int32_t *) 0x5000000C) #define MEM5 (*(volatile int32_t *) 0x50000010) #define MEM6 (*(volatile int32_t *) 0x50000014) #define MEM7 (*(volatile int32_t *) 0x50000018) #define MEM8 (*(volatile int32_t *) 0x5000001C) //Define a constant delay value #define DELAY_LOAD_VALUE 0x00080000 //about half a second int main() { /* * Initialize MSS GPIOs. */ MSS_GPIO_init(); /* * Configure MSS GPIO pin */ MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); /* * Set initial state of GPIO pin */ MSS_GPIO_set_output(MSS_GPIO_0,0); //Using UART 0 mss_uart_instance_t * const gp_my_uart = &g_mss_uart0; /* * Using one delay to write and one delay to read */ volatile int32_t delay_count_1 = 0; volatile int32_t delay_count_2 = 0; delay_count_1 = DELAY_LOAD_VALUE/2; delay_count_2 = DELAY_LOAD_VALUE; /* * Variable to read value from memory to set led */ uint8_t led; /* * Incrementing value to be written to memory */ int32_t i = 0; /* * Variables to hold values read from memory */ int32_t m1,m2,m3,m4,m5,m6,m7,m8; /* * data to be sent on UART, holding chopped memory data */ uint8_t data[4]; /*-------------------------------------------------------------------------- * Initialize and configure UART. */ MSS_UART_init(gp_my_uart, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT); MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r*******************Hello World*********************\n\r"); //Always while( 1 ) { -- delay_count_1; -- delay_count_2; /* * Updating memory values */ if (delay_count_1 <= 0) { delay_count_1 = DELAY_LOAD_VALUE; MEM1 = i; MEM2 = i+1; MEM3 = i+2; MEM4 = i+3; MEM5 = i+4; MEM6 = i+5; MEM7 = i+6; MEM8 = i+7; } /* * Reading memory values */ if (delay_count_2 <= 0) { delay_count_2 = DELAY_LOAD_VALUE; m1 = MEM1; if(m1 != i) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 1 is different from expected! *****\n\r"); } /* * Chopping data from memory, sending it to UART. * Reading hex/binary values from console */ data[3] = m1; data[2] = m1 >>8; data[1] = m1 >>16; data[0] = m1 >>24; MSS_UART_polled_tx(gp_my_uart, data, sizeof(data)); m2 = MEM2; if(m2 != i+1) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 2 is different from expected! *****\n\r"); } m3 = MEM3; if(m3 != i+2) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 3 is different from expected! *****\n\r"); } m4 = MEM4; if(m4 != i+3) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 4 is different from expected! *****\n\r"); } m5 = MEM5; if(m5 != i+4) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 5 is different from expected! *****\n\r"); } m6 = MEM6; if(m6 != i+5) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 6 is different from expected! *****\n\r"); } m7 = MEM7; if(m7 != i+6) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 7 is different from expected! *****\n\r"); } m8 = MEM8; if(m8 != i+7) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 8 is different from expected! *****\n\r"); } /* * Read last bit of current value of m1 and set GPIO (led) according to the bit value * Bit should toggle for every read cycle */ led = m1 & 0x00000001; MSS_GPIO_set_output(MSS_GPIO_0,led); ++i; } } } The application will write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> =VHDL files= ------------------------------------------------------------------------------- -- Title : APB_to_DCS -- Project : RCU2 ------------------------------------------------------------------------------- -- File : apb_to_dcs.vhd -- Last edited by : Christian Torgersen -- Last update : 30.09.2013 - 09:26 -- Current Revision : 1.0 ------------------------------------------------------------------------------- -- Description : Mapping between AMBA APB and DCS bus. ------------------------------------------------------------------------------- -- Revision History : ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway -- This file has been written by Christian Torgersen -- Christian.torgersen@student.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; library work; use work.dcs_interface_pkg.all; entity apb_to_dcs is port( --APB input control signals penable : in std_logic; -- APB enable signal. Asserted high on second pulse psel : in std_logic; -- APB slave select from master pwrite : in std_logic; -- APB direction setting --APB input and addr paddr : in std_logic_vector(31 downto 0); -- APB address pwdata : in std_logic_vector(31 downto 0); -- APB write data --APB output signals prdata : out std_logic_vector(31 downto 0); -- APB read data pready : out std_logic; -- APB hold signal, for read/write more than 2 cycles pslverr : out std_logic; -- APB slave error signal clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity reset_from_siu : in std_logic; -- asynch reset from SIU, positive polarity --internal resets global_reset : out std_logic; -- global reset, positive polarity rcu_reset : out std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : out std_logic; -- reset for FEC, positive polarity --DCS bus signals we_dcs : out std_logic; -- write enable to the internal modules dcs_busBadd : out std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : out std_logic; -- interrupt in case DCS needs bus dcs_bg : in std_logic; -- dcs bus grant from arbiter dcs_br : out std_logic; -- dcs bus request to arbiter siu_bg : in std_logic -- siu bus grant from arbiter ); end apb_to_dcs; architecture arc of apb_to_dcs is --signal declarations type state is (s_idle, s_wait_for_grant, s_grant, s_error); signal current_state, next_state : state; -- signal resetting : std_logic; -- high when the resetting addresses are received, only used by dcs_addr signal timeout :std_logic; signal timeout_cnt :std_logic_vector(6 downto 0); signal timeout_cnt_en :std_logic; signal we_dcs_i :std_logic; begin --combinatorics timeout <= timeout_cnt(6); we_dcs <= we_dcs_i; dcs_br <= '1' when (psel = '1'and (next_state = s_wait_for_grant or next_state = s_grant)) else '0'; dcs_busBadd <= paddr(15 downto 0); --linking between APB and dcs addresses dcs_busBdata_out <= pwdata when (pwrite='1' and dcs_bg= '1') else (others => '0'); -- APB to DCS data prdata <= dcs_busBdata_in when (pwrite ='0' and dcs_bg= '1') else (others => '0'); -- DCS to APB data -- purpose: timeout counter for transaction p_timeout_cnt: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt <= (others => '0'); elsif rising_edge(clk) then if (timeout_cnt_en = '1') then timeout_cnt <= timeout_cnt + 1; else timeout_cnt <= (others => '0'); end if; end if; end process p_timeout_cnt; -- purpose: state machine driver p_state_driver: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then current_state <= s_idle; elsif rising_edge(clk) then current_state <= next_state; end if; end process p_state_driver; --purpose: set next state p_next_state: process(current_state, dcs_bg, timeout, psel, penable) begin case current_state is when s_idle => if (dcs_bg = '1' and psel = '1' and penable = '0') then -- giving two cycle read/write possibility next_state <= s_grant; elsif (dcs_bg = '0' and psel = '1' and penable = '0') then --Three or more cycle read/write next_state <= s_wait_for_grant; else next_state <= s_idle; end if; when s_wait_for_grant => if (dcs_bg = '1') then next_state <= s_grant; elsif (timeout = '1') then next_state <= s_error; else next_state <= s_wait_for_grant; end if; when s_grant => next_state <= s_idle; when s_error => next_state <= s_idle; when others => next_state <= s_idle; end case; end process p_next_state; -- purpose: set outputs of module and internal signals p_output: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt_en <= '0'; we_dcs_i <= '0'; pslverr <= '0'; pready <= '1'; elsif rising_edge(clk) then --defaults case current_state is when s_idle => pslverr <= '0'; timeout_cnt_en <= '0'; when s_wait_for_grant => when s_grant => we_dcs_i <= '0'; pready <= '1'; when s_error => pslverr <= '1'; pready <= '1'; timeout_cnt_en <= '0'; when others => --defaults end case; case next_state is when s_idle => pready <= '1'; when s_wait_for_grant => timeout_cnt_en <= '1'; pready <= '0'; when s_grant => timeout_cnt_en <= '0'; pready <= '1'; we_dcs_i <= pwrite; when others => end case; end if ; end process p_output; --purpose: resets p_reset : process(clk, reset_n) begin if (reset_n = '0') then global_reset <= '1'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '1'; fec_reset <= '1'; elsif rising_edge(clk) then global_reset <= '0'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '0'; fec_reset <= '0'; if (we_dcs_i = '1') then case (paddr(15 downto 0)) is when c_global_reset => global_reset <= '1'; when c_rcu_reset => rcu_reset <= '1'; when c_fec_reset => fec_reset <= '1'; when others => -- do nothing end case; end if; end if; end process p_reset; --Purpose: Set up bus interrupt p_bus_int: process (clk, reset_n, reset_from_siu) begin if( reset_n = '0' or reset_from_siu = '1') then dcs_bi <= '0'; elsif (rising_edge(clk)) then if(siu_bg = '0' or dcs_bg = '1') then --do not interrupt if we have grant dcs_bi <= '0'; elsif (paddr (15 downto 0) = c_arbiter_irq) then dcs_bi <= '1'; end if; end if; end process p_bus_int; end architecture arc; ------------------------------------------------------------------------------- -- Title : DCS interface Package -- Project : RCU DCS interface ------------------------------------------------------------------------------- -- File : $RCSfile: dcs_interface_pkg.vhd,v $ -- Last edited by : $Author: alme $ -- Last update : $Date: 2008/02/15 12:23:43 $ -- Current Revision : $Revision: 1.4 $ ------------------------------------------------------------------------------- -- Description : Constant and function library for RCU Trigger Receiver -- design ------------------------------------------------------------------------------- -- Revision History : -- http://portal1.ift.uib.no/cgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway, 2005 -- This file has been written by Johan Alme -- Johan.Alme@ift.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; package dcs_interface_pkg is -- address information (this should be moved to a global adress mapping definition file.) -- memory spaces. -- Safety module address. Always ack these. constant c_MSM_space : std_logic_vector(3 downto 0):=X"8"; -- Actel space should NEVER be acked constant c_Actel_space : std_logic_vector(3 downto 0):=X"B"; -- treat as normal except for the subadresses 0xA00 and 0xA01 that should not be acked. constant c_trigger_space : std_logic_vector(3 downto 0):=X"4"; -- sub adresses -- belongs to trigger space. The two addresses are defined on the DCS board and should not be acked. constant c_dcsSetBunchReset : std_logic_vector(11 downto 0):= X"A00"; constant c_dcsSetEventReset : std_logic_vector(11 downto 0):= X"A01"; constant c_global_reset : std_logic_vector(15 downto 0):= X"5300"; constant c_fec_reset : std_logic_vector(15 downto 0):= X"5301"; constant c_rcu_reset : std_logic_vector(15 downto 0):= X"5302"; constant c_arbiter_irq : std_logic_vector(15 downto 0):= X"5310"; -- interrupts SIU grant constant c_grant : std_logic_vector(15 downto 0):= X"5311"; -- grant information given --Constant defining mem mapped mode on which the interface should be active constant c_memMappedMode0 : std_logic_vector(1 downto 0) := "00"; constant c_memMappedMode1 : std_logic_vector(1 downto 0) := "11"; end package dcs_interface_pkg; -------------------------------------------------------------------------------- -- Company: University of Bergen -- -- File: DCS_test.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- Component used to test functionality of apb_to_dcs bridge -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: Christian Torgersen -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity DCS_test is port ( clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity global_reset : in std_logic; -- global reset, positive polarity rcu_reset : in std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : in std_logic; -- reset for FEC, positive polarity we_dcs : in std_logic; -- write enable to the internal modules dcs_busBadd : in std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : in std_logic; -- interrupt in case DCS needs bus dcs_bg : out std_logic; -- dcs bus grant from arbiter dcs_br : in std_logic; -- dcs bus request to arbiter siu_bg : out std_logic -- siu bus grant from arbiter ); end DCS_test; architecture arch of DCS_test is -- signal, component etc. declarations signal data_outs :std_logic_vector(31 DOWNTO 0); signal wr_enable, rd_enable : std_logic; component mtest port( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end component; begin mtest_map: mtest port map( clk => clk, nreset => reset_n, wr_en => wr_enable, rd_en => rd_enable, address => dcs_busBadd(7 downto 0), data_in => dcs_busBdata_in, data_out => dcs_busBdata_out ); --dcs_busBdata_out <= data_outs; siu_bg <= '0'; rd_enable <= not(we_dcs); wr_enable <= we_dcs; -- to be used if checking two cycle read/write: --dcs_bg <= '1'; -- Used to test arbitration and wait states: p_arbitration: process (clk, reset_n) begin if reset_n = '0' then dcs_bg <= '1'; data_outs <= (others => '0'); elsif rising_edge(clk) then if (dcs_br = '1') then dcs_bg <= '1'; else dcs_bg<= '0'; end if; end if; end process p_arbitration; end arch; -------------------------------------------------------------------------------- -- Company: <Name> -- -- File: mtest.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- <Description here> -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: <Name> -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity mtest is port ( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end mtest; architecture arch of mtest is -- signal, component etc. declarations type memory IS ARRAY (0 TO 31) of std_logic_vector(31 DOWNTO 0); --type memory IS ARRAY (31 DOWNTO 0) of std_logic_vector; signal myram: memory; --attribute ram_init_file: STRING; --attribute ram_init_file OF myram: SIGNAL IS "ram_contents.mif"; begin -- generation of data_out process(clk,nreset) begin if (nreset='0') then data_out <= x"0000_0000"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- data_out <= x"0000_0000"; -- elsif(rd_en='1') then if(rd_en='1') then data_out <= myram(to_integer(unsigned(address))); end if; end if; end process; -- writing data to memory process(clk,nreset) begin if (nreset='0') then myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; -- elsif(wr_en='1') then if (wr_en='1') then myram(to_integer(unsigned(address))) <= data_in; end if; end if; end process; end arch; [[Category:Mikroelektronikk]] 72ee44979ef309523e0f6670575a18febe7dd7a6 1978 1964 2013-10-22T11:21:22Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files which are included at the bottom of the page. Save the files with the names specified in the text. The files can be included by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). Copy the following to the User.bfm in your project, located under ''Files'' and ''simulation''. #=========================================================== # Enter your BFM commands in this file. # # Syntax: # ------- # # memmap resource_name base_address; # # write width resource_name byte_offset data; # read width resource_name byte_offset; # readcheck width resource_name byte_offset data; # #=========================================================== #include "subsystem.bfm" procedure user_main; # perform subsystem initialization routine # call subsystem_init; # add your BFM commands below: memmap apb_to_dcs_0 0x50000000; write w apb_to_dcs_0 0x0 0x12345678; write w apb_to_dcs_0 0x4 0xBEEFFACE; write w apb_to_dcs_0 0x8 0xABCDEF12; write w apb_to_dcs_0 0xC 0x44556622; readcheck w apb_to_dcs_0 0x0 0x12345678; readcheck w apb_to_dcs_0 0x4 0xBEEFFACE; readcheck w apb_to_dcs_0 0x8 0xABCDEF12; readcheck w apb_to_dcs_0 0xC 0x44556622; write w apb_to_dcs_0 0x10 0x98765432; write w apb_to_dcs_0 0x14 0xABBABABE; write w apb_to_dcs_0 0x18 0x12345ABC; write w apb_to_dcs_0 0x1C 0xDEADBEEF; readcheck w apb_to_dcs_0 0x10 0x98765432; readcheck w apb_to_dcs_0 0x14 0xABBABABE; readcheck w apb_to_dcs_0 0x18 0x12345ABC; readcheck w apb_to_dcs_0 0x1C 0xDEADBEEF; return Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied below. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. quietly set ACTELLIBNAME SmartFusion2 quietly set PROJECT_DIR "C:/Microsemi/Projects/APB_custom_peripheral" source "${PROJECT_DIR}/simulation/CompileDssBfm.tcl";source "${PROJECT_DIR}/simulation/bfmtovec_compile.tcl"; if {[file exists presynth/_info]} { echo "INFO: Simulation library presynth already exists" } else { vlib presynth } vmap presynth presynth vmap SmartFusion2 "C:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" if {[file exists COREAPB3_LIB/_info]} { echo "INFO: Simulation library COREAPB3_LIB already exists" } else { vlib COREAPB3_LIB } vmap COREAPB3_LIB "COREAPB3_LIB" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral_MSS/APB_custom_peripheral_MSS.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/dcs_interface_pkg.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/apb_to_dcs.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/mtest.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/DCS_test.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/FCCC_0/APB_custom_peripheral_FCCC_0_FCCC.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/OSC_0/APB_custom_peripheral_OSC_0_OSC.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_muxptob3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_iaddr_reg.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/components.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/APB_custom_peripheral.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/testbench.vhd" vsim -L SmartFusion2 -L presynth -L COREAPB3_LIB -t 1fs presynth.testbench add wave \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PREADY \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSLVERR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE_PLL_LOCK \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_F2M \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PADDR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PENABLE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSEL \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PRDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWRITE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_M2F add wave \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/penable \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/psel \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwrite \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/paddr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/prdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pslverr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/clk \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_n \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_from_siu \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/global_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/rcu_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/fec_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pready \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/siu_bg add wave \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/siu_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/wr_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/rd_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/address \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/myram run 150 us Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file supplied below. Name it Fabric_top.io. # Microsemi I/O Physical Design Constraints file # Auto Generated User I/O Constraints file # Version: v11.1 11.1.0.14 # Family: SmartFusion2 , Die: M2S050T_ES , Package: 896 FBGA # Date generated: Fri Sep 20 10:03:27 2013 # # User Locked I/O Bank Settings # set_iobank Bank0 -vcci 1.80 -fixed yes set_iobank Bank1 -vcci 3.30 -fixed yes set_iobank Bank2 -vcci 3.30 -fixed yes set_iobank Bank3 -vcci 3.30 -fixed yes set_iobank Bank4 -vcci 3.30 -fixed yes set_iobank Bank8 -vcci 3.30 -fixed yes # # Unlocked I/O Bank Settings # The I/O Bank Settings can be locked by directly editing this file # or by making changes in the I/O Attribute Editor # # # User Locked I/O settings # set_io MMUART_0_RXD -pinname L23 -fixed yes set_io MMUART_0_TXD -pinname H27 -fixed yes set_io MSS_RESET_N_F2M \ -pinname F30 \ -fixed yes \ -RES_PULL Up \ -DIRECTION INPUT set_io GPIO_0_M2F \ -pinname G30 \ -fixed yes \ -DIRECTION OUTPUT The file is imported by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the following: #include "unistd.h" #include <stdio.h> #include "drivers/mss_uart/mss_uart.h" #include "drivers/mss_gpio/mss_gpio.h" //Initialize registers to read/write #define APB_TO_DCS_0 0x50000000U #define MEM1 (*(volatile int32_t *) 0x50000000) #define MEM2 (*(volatile int32_t *) 0x50000004) #define MEM3 (*(volatile int32_t *) 0x50000008) #define MEM4 (*(volatile int32_t *) 0x5000000C) #define MEM5 (*(volatile int32_t *) 0x50000010) #define MEM6 (*(volatile int32_t *) 0x50000014) #define MEM7 (*(volatile int32_t *) 0x50000018) #define MEM8 (*(volatile int32_t *) 0x5000001C) //Define a constant delay value #define DELAY_LOAD_VALUE 0x00080000 //about half a second int main() { /* * Initialize MSS GPIOs. */ MSS_GPIO_init(); /* * Configure MSS GPIO pin */ MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); /* * Set initial state of GPIO pin */ MSS_GPIO_set_output(MSS_GPIO_0,0); //Using UART 0 mss_uart_instance_t * const gp_my_uart = &g_mss_uart0; /* * Using one delay to write and one delay to read */ volatile int32_t delay_count_1 = 0; volatile int32_t delay_count_2 = 0; delay_count_1 = DELAY_LOAD_VALUE/2; delay_count_2 = DELAY_LOAD_VALUE; /* * Variable to read value from memory to set led */ uint8_t led; /* * Incrementing value to be written to memory */ int32_t i = 0; /* * Variables to hold values read from memory */ int32_t m1,m2,m3,m4,m5,m6,m7,m8; /* * data to be sent on UART, holding chopped memory data */ uint8_t data[4]; /*-------------------------------------------------------------------------- * Initialize and configure UART. */ MSS_UART_init(gp_my_uart, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT); MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r*******************Hello World*********************\n\r"); //Always while( 1 ) { -- delay_count_1; -- delay_count_2; /* * Updating memory values */ if (delay_count_1 <= 0) { delay_count_1 = DELAY_LOAD_VALUE; MEM1 = i; MEM2 = i+1; MEM3 = i+2; MEM4 = i+3; MEM5 = i+4; MEM6 = i+5; MEM7 = i+6; MEM8 = i+7; } /* * Reading memory values */ if (delay_count_2 <= 0) { delay_count_2 = DELAY_LOAD_VALUE; m1 = MEM1; if(m1 != i) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 1 is different from expected! *****\n\r"); } /* * Chopping data from memory, sending it to UART. * Reading hex/binary values from console */ data[3] = m1; data[2] = m1 >>8; data[1] = m1 >>16; data[0] = m1 >>24; MSS_UART_polled_tx(gp_my_uart, data, sizeof(data)); m2 = MEM2; if(m2 != i+1) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 2 is different from expected! *****\n\r"); } m3 = MEM3; if(m3 != i+2) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 3 is different from expected! *****\n\r"); } m4 = MEM4; if(m4 != i+3) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 4 is different from expected! *****\n\r"); } m5 = MEM5; if(m5 != i+4) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 5 is different from expected! *****\n\r"); } m6 = MEM6; if(m6 != i+5) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 6 is different from expected! *****\n\r"); } m7 = MEM7; if(m7 != i+6) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 7 is different from expected! *****\n\r"); } m8 = MEM8; if(m8 != i+7) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 8 is different from expected! *****\n\r"); } /* * Read last bit of current value of m1 and set GPIO (led) according to the bit value * Bit should toggle for every read cycle */ led = m1 & 0x00000001; MSS_GPIO_set_output(MSS_GPIO_0,led); ++i; } } } The application will write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> =VHDL files= ------------------------------------------------------------------------------- -- Title : APB_to_DCS -- Project : RCU2 ------------------------------------------------------------------------------- -- File : apb_to_dcs.vhd -- Last edited by : Christian Torgersen -- Last update : 30.09.2013 - 09:26 -- Current Revision : 1.0 ------------------------------------------------------------------------------- -- Description : Mapping between AMBA APB and DCS bus. ------------------------------------------------------------------------------- -- Revision History : ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway -- This file has been written by Christian Torgersen -- Christian.torgersen@student.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; library work; use work.dcs_interface_pkg.all; entity apb_to_dcs is port( --APB input control signals penable : in std_logic; -- APB enable signal. Asserted high on second pulse psel : in std_logic; -- APB slave select from master pwrite : in std_logic; -- APB direction setting --APB input and addr paddr : in std_logic_vector(31 downto 0); -- APB address pwdata : in std_logic_vector(31 downto 0); -- APB write data --APB output signals prdata : out std_logic_vector(31 downto 0); -- APB read data pready : out std_logic; -- APB hold signal, for read/write more than 2 cycles pslverr : out std_logic; -- APB slave error signal clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity reset_from_siu : in std_logic; -- asynch reset from SIU, positive polarity --internal resets global_reset : out std_logic; -- global reset, positive polarity rcu_reset : out std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : out std_logic; -- reset for FEC, positive polarity --DCS bus signals we_dcs : out std_logic; -- write enable to the internal modules dcs_busBadd : out std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : out std_logic; -- interrupt in case DCS needs bus dcs_bg : in std_logic; -- dcs bus grant from arbiter dcs_br : out std_logic; -- dcs bus request to arbiter siu_bg : in std_logic -- siu bus grant from arbiter ); end apb_to_dcs; architecture arc of apb_to_dcs is --signal declarations type state is (s_idle, s_wait_for_grant, s_grant, s_error); signal current_state, next_state : state; -- signal resetting : std_logic; -- high when the resetting addresses are received, only used by dcs_addr signal timeout :std_logic; signal timeout_cnt :std_logic_vector(6 downto 0); signal timeout_cnt_en :std_logic; signal we_dcs_i :std_logic; begin --combinatorics timeout <= timeout_cnt(6); we_dcs <= we_dcs_i; dcs_br <= '1' when (psel = '1'and (next_state = s_wait_for_grant or next_state = s_grant)) else '0'; dcs_busBadd <= paddr(15 downto 0); --linking between APB and dcs addresses dcs_busBdata_out <= pwdata when (pwrite='1' and dcs_bg= '1') else (others => '0'); -- APB to DCS data prdata <= dcs_busBdata_in when (pwrite ='0' and dcs_bg= '1') else (others => '0'); -- DCS to APB data -- purpose: timeout counter for transaction p_timeout_cnt: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt <= (others => '0'); elsif rising_edge(clk) then if (timeout_cnt_en = '1') then timeout_cnt <= timeout_cnt + 1; else timeout_cnt <= (others => '0'); end if; end if; end process p_timeout_cnt; -- purpose: state machine driver p_state_driver: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then current_state <= s_idle; elsif rising_edge(clk) then current_state <= next_state; end if; end process p_state_driver; --purpose: set next state p_next_state: process(current_state, dcs_bg, timeout, psel, penable) begin case current_state is when s_idle => if (dcs_bg = '1' and psel = '1' and penable = '0') then -- giving two cycle read/write possibility next_state <= s_grant; elsif (dcs_bg = '0' and psel = '1' and penable = '0') then --Three or more cycle read/write next_state <= s_wait_for_grant; else next_state <= s_idle; end if; when s_wait_for_grant => if (dcs_bg = '1') then next_state <= s_grant; elsif (timeout = '1') then next_state <= s_error; else next_state <= s_wait_for_grant; end if; when s_grant => next_state <= s_idle; when s_error => next_state <= s_idle; when others => next_state <= s_idle; end case; end process p_next_state; -- purpose: set outputs of module and internal signals p_output: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt_en <= '0'; we_dcs_i <= '0'; pslverr <= '0'; pready <= '1'; elsif rising_edge(clk) then --defaults case current_state is when s_idle => pslverr <= '0'; timeout_cnt_en <= '0'; when s_wait_for_grant => when s_grant => we_dcs_i <= '0'; pready <= '1'; when s_error => pslverr <= '1'; pready <= '1'; timeout_cnt_en <= '0'; when others => --defaults end case; case next_state is when s_idle => pready <= '1'; when s_wait_for_grant => timeout_cnt_en <= '1'; pready <= '0'; when s_grant => timeout_cnt_en <= '0'; pready <= '1'; we_dcs_i <= pwrite; when others => end case; end if ; end process p_output; --purpose: resets p_reset : process(clk, reset_n) begin if (reset_n = '0') then global_reset <= '1'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '1'; fec_reset <= '1'; elsif rising_edge(clk) then global_reset <= '0'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '0'; fec_reset <= '0'; if (we_dcs_i = '1') then case (paddr(15 downto 0)) is when c_global_reset => global_reset <= '1'; when c_rcu_reset => rcu_reset <= '1'; when c_fec_reset => fec_reset <= '1'; when others => -- do nothing end case; end if; end if; end process p_reset; --Purpose: Set up bus interrupt p_bus_int: process (clk, reset_n, reset_from_siu) begin if( reset_n = '0' or reset_from_siu = '1') then dcs_bi <= '0'; elsif (rising_edge(clk)) then if(siu_bg = '0' or dcs_bg = '1') then --do not interrupt if we have grant dcs_bi <= '0'; elsif (paddr (15 downto 0) = c_arbiter_irq) then dcs_bi <= '1'; end if; end if; end process p_bus_int; end architecture arc; ------------------------------------------------------------------------------- -- Title : DCS interface Package -- Project : RCU DCS interface ------------------------------------------------------------------------------- -- File : $RCSfile: dcs_interface_pkg.vhd,v $ -- Last edited by : $Author: alme $ -- Last update : $Date: 2008/02/15 12:23:43 $ -- Current Revision : $Revision: 1.4 $ ------------------------------------------------------------------------------- -- Description : Constant and function library for RCU Trigger Receiver -- design ------------------------------------------------------------------------------- -- Revision History : -- http://portal1.ift.uib.no/cgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway, 2005 -- This file has been written by Johan Alme -- Johan.Alme@ift.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; package dcs_interface_pkg is -- address information (this should be moved to a global adress mapping definition file.) -- memory spaces. -- Safety module address. Always ack these. constant c_MSM_space : std_logic_vector(3 downto 0):=X"8"; -- Actel space should NEVER be acked constant c_Actel_space : std_logic_vector(3 downto 0):=X"B"; -- treat as normal except for the subadresses 0xA00 and 0xA01 that should not be acked. constant c_trigger_space : std_logic_vector(3 downto 0):=X"4"; -- sub adresses -- belongs to trigger space. The two addresses are defined on the DCS board and should not be acked. constant c_dcsSetBunchReset : std_logic_vector(11 downto 0):= X"A00"; constant c_dcsSetEventReset : std_logic_vector(11 downto 0):= X"A01"; constant c_global_reset : std_logic_vector(15 downto 0):= X"5300"; constant c_fec_reset : std_logic_vector(15 downto 0):= X"5301"; constant c_rcu_reset : std_logic_vector(15 downto 0):= X"5302"; constant c_arbiter_irq : std_logic_vector(15 downto 0):= X"5310"; -- interrupts SIU grant constant c_grant : std_logic_vector(15 downto 0):= X"5311"; -- grant information given --Constant defining mem mapped mode on which the interface should be active constant c_memMappedMode0 : std_logic_vector(1 downto 0) := "00"; constant c_memMappedMode1 : std_logic_vector(1 downto 0) := "11"; end package dcs_interface_pkg; -------------------------------------------------------------------------------- -- Company: University of Bergen -- -- File: DCS_test.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- Component used to test functionality of apb_to_dcs bridge -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: Christian Torgersen -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity DCS_test is port ( clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity global_reset : in std_logic; -- global reset, positive polarity rcu_reset : in std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : in std_logic; -- reset for FEC, positive polarity we_dcs : in std_logic; -- write enable to the internal modules dcs_busBadd : in std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : in std_logic; -- interrupt in case DCS needs bus dcs_bg : out std_logic; -- dcs bus grant from arbiter dcs_br : in std_logic; -- dcs bus request to arbiter siu_bg : out std_logic -- siu bus grant from arbiter ); end DCS_test; architecture arch of DCS_test is -- signal, component etc. declarations signal data_outs :std_logic_vector(31 DOWNTO 0); signal wr_enable, rd_enable : std_logic; component mtest port( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end component; begin mtest_map: mtest port map( clk => clk, nreset => reset_n, wr_en => wr_enable, rd_en => rd_enable, address => dcs_busBadd(7 downto 0), data_in => dcs_busBdata_in, data_out => dcs_busBdata_out ); --dcs_busBdata_out <= data_outs; siu_bg <= '0'; rd_enable <= not(we_dcs); wr_enable <= we_dcs; -- to be used if checking two cycle read/write: --dcs_bg <= '1'; -- Used to test arbitration and wait states: p_arbitration: process (clk, reset_n) begin if reset_n = '0' then dcs_bg <= '1'; data_outs <= (others => '0'); elsif rising_edge(clk) then if (dcs_br = '1') then dcs_bg <= '1'; else dcs_bg<= '0'; end if; end if; end process p_arbitration; end arch; -------------------------------------------------------------------------------- -- Company: <Name> -- -- File: mtest.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- <Description here> -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: <Name> -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity mtest is port ( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end mtest; architecture arch of mtest is -- signal, component etc. declarations type memory IS ARRAY (0 TO 31) of std_logic_vector(31 DOWNTO 0); --type memory IS ARRAY (31 DOWNTO 0) of std_logic_vector; signal myram: memory; --attribute ram_init_file: STRING; --attribute ram_init_file OF myram: SIGNAL IS "ram_contents.mif"; begin -- generation of data_out process(clk,nreset) begin if (nreset='0') then data_out <= x"0000_0000"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- data_out <= x"0000_0000"; -- elsif(rd_en='1') then if(rd_en='1') then data_out <= myram(to_integer(unsigned(address))); end if; end if; end process; -- writing data to memory process(clk,nreset) begin if (nreset='0') then myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; -- elsif(wr_en='1') then if (wr_en='1') then myram(to_integer(unsigned(address))) <= data_in; end if; end if; end process; end arch; [[Category:Mikroelektronikk]] cbc5a9161a5b19eb1da66bb5c54ae713c3aa04c2 File:New project.jpg 6 428 1928 2013-09-27T13:13:42Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MSS CCC.jpg 6 429 1929 2013-09-27T13:29:25Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MSS reset.jpg 6 430 1930 2013-09-27T13:29:42Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:FIC0.jpg 6 431 1931 2013-09-27T13:30:00Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MMUART.jpg 6 432 1932 2013-09-27T13:30:19Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:MSS finished.jpg 6 433 1933 2013-09-27T13:30:39Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:CoreAPB3 config.jpg 6 434 1934 2013-09-27T13:31:03Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Chip osc.jpg 6 435 1935 2013-09-27T13:31:26Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:CCC core.jpg 6 436 1936 2013-09-27T13:31:45Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Module bus interface.jpg 6 437 1937 2013-09-27T13:32:11Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Presynth transcript.jpg 6 439 1939 2013-09-27T13:33:08Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Presynth wave.jpg 6 440 1940 2013-09-27T13:33:26Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Debug configuration.jpg 6 441 1941 2013-09-27T13:33:45Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Debugging.jpg 6 442 1942 2013-09-27T13:34:03Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Debug binary count.jpg 6 443 1943 2013-09-27T13:34:20Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Modified MSS.jpg 6 444 1944 2013-09-28T07:52:44Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:SmartDesign finished.jpg 6 445 1957 2013-09-30T06:47:32Z Cto070 76 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Eksperimentalfysikk med prosjektoppgave - PHYS117 0 370 1965 1667 2013-09-30T14:47:30Z Gge002 52 wikitext text/x-wiki ==Projects== * [[Applied Planetary Radio Astronomy]] * [[Phys117_-_PET_project|PET detector]] ==Useful stuff== * [[Inductance_meter|Inductance meter]] 3688ee510860c1d7107a31dd176be3b31089c9b3 1973 1965 2013-10-03T09:35:57Z Gge002 52 wikitext text/x-wiki ==Projects== * [[Applied Planetary Radio Astronomy]] * [[Phys117_-_PET_project|PET detector]] * [[Bore hole probe]] ==Useful stuff== * [[Inductance_meter|Inductance meter]] a258e232c2ac91257a0d40cb7436b59f2dc3e756 Inductance meter 0 446 1966 2013-09-30T16:50:37Z Gge002 52 Created page with "==Objective== A traditional multimeter accessible to the hobbyist can measure all essential electric properties, including capacitance. The only property that still remains di..." wikitext text/x-wiki ==Objective== A traditional multimeter accessible to the hobbyist can measure all essential electric properties, including capacitance. The only property that still remains difficult to measure without extra investments (which can become rather essential) is inductance. Solenoids/coils are a significant part of any analogue circuit and, as opposed to all other discrete components, are often homemade. There are formulae helping to calculate parameters like number of windings, cross-section of the core etc, but one critically needs to verify the inductance of the final product. This article describes how one can build a rather accurate L-meter at home for probably less than $10. Here you will find the schematic, PCB layout, micro-controller source code; basically all you need to DIY. ==Description== The L-meter presented here is based on a rather popular solution using the LM311 comparator (see e.g. [http://electronics-diy.com/lc_meter.php]). It is stripped from the capacitance measuring capability due to micro-controller (MCU) source code size limitation. This limitation is dictated by the compiler I have used: MikroC PRO for PIC, ver. 6.0.0. The free license of the compiler allows up to 2k of program words (2066 to be exact, and the present code is 2065 program words). Other solutions omitting the LM311 and using built-in the MCU comparators can also be found (see e.g. [https://sites.google.com/site/vk3bhr/home/index2-html]). The MCU used in this project is PIC 16F88. Obviously, the code given below is also for this MCU. ==Specs== The L-meter presented here has a lower limit of ~1 µH and an upper limit of ~1MH (Mega Henry). Some sources (e.g. [http://electronics-diy.com/lc_meter.php]) claim lower limits as low as 10 nH, but I personally do not see how this can be achieved with the current solution. For more details see section "Theory and Schematic". ==Theory and Schematic== ==Layouts== ==Bill of materials== ==Code== ffb556f7add5826c7f6f5e4ad4208e0511b148b2 1969 1966 2013-09-30T20:44:35Z Gge002 52 wikitext text/x-wiki ==Objective== A traditional multimeter accessible to the hobbyist can measure all essential electric properties, including capacitance. The only property that still remains difficult to measure without extra investments (which can become rather essential) is inductance. Solenoids/coils are a significant part of any analogue circuit and, as opposed to all other discrete components, are often homemade. There are formulae helping to calculate parameters like number of windings, cross-section of the core etc, but one critically needs to verify the inductance of the final product. This article describes how one can build a rather accurate L-meter at home for probably less than $10. Here you will find the schematic, PCB layout, micro-controller source code; basically all you need to DIY. ==Description== The L-meter presented here is based on a rather popular solution using the LM311 comparator (see e.g. [http://electronics-diy.com/lc_meter.php]). It is stripped from the capacitance measuring capability due to micro-controller (MCU) source code size limitation. This limitation is dictated by the compiler I have used: MikroC PRO for PIC, ver. 6.0.0. The free license of the compiler allows up to 2k of program words (2066 to be exact, and the present code is 2065 program words). Other solutions omitting the LM311 and using built-in the MCU comparators can also be found (see e.g. [https://sites.google.com/site/vk3bhr/home/index2-html]). The MCU used in this project is PIC 16F88. Obviously, the code given below is also for this MCU. ==Specs== The L-meter presented here has a lower limit of ~1 µH and an upper limit of ~1MH (Mega Henry). Some sources (e.g. [http://electronics-diy.com/lc_meter.php]) claim lower limits as low as 10 nH, but I personally do not see how this can be achieved with the current solution. For more details see section "Theory and Schematic". ==Theory and Schematic== [[File:ChestotomerShema.png|400px|thumb|right|L-meter schematic]] The working principle of the schematic is as follows: # A tank circuit consisting of the capacitor C3 and the unknown coil will vibrate at a resonance frequency: ==Layouts== ==Bill of materials== ==Code== c2ac7713637c003051eea9aeebba4a4585ecdb98 1970 1969 2013-10-02T14:32:22Z Gge002 52 wikitext text/x-wiki ==Objective== A traditional multimeter accessible to the hobbyist can measure all essential electric properties, including capacitance. The only property that still remains difficult to measure without extra investments (which can become rather essential) is inductance. Solenoids/coils are a significant part of any analogue circuit and, as opposed to all other discrete components, are often homemade. There are formulae helping to calculate parameters like number of windings, cross-section of the core etc, but one critically needs to verify the inductance of the final product. This article describes how one can build a rather accurate L-meter at home for probably less than $10. Here you will find the schematic, PCB layout, micro-controller source code; basically all you need to DIY. ==Description== The L-meter presented here is based on a rather popular solution using the LM311 comparator (see e.g. [http://electronics-diy.com/lc_meter.php]). It is stripped from the capacitance measuring capability due to micro-controller (MCU) source code size limitation. This limitation is dictated by the compiler I have used: MikroC PRO for PIC, ver. 6.0.0. The free license of the compiler allows up to 2k of program words (2066 to be exact, and the present code is 2065 program words). Other solutions omitting the LM311 and using built-in the MCU comparators can also be found (see e.g. [https://sites.google.com/site/vk3bhr/home/index2-html]). The MCU used in this project is PIC 16F88. Obviously, the code given below is also for this MCU. ==Specs== The L-meter presented here has a lower limit of ~1 µH and an upper limit of ~1 MH (Mega Henry). Some sources (e.g. [http://electronics-diy.com/lc_meter.php]) claim lower limits as low as 10 nH, but I personally do not see how this can be achieved with the current solution. For more details see section "Theory and Schematic". ==Theory and Schematic== [[File:ChestotomerShema.png|400px|thumb|right|L-meter schematic]] The working principle of the schematic is as follows: # A tank circuit consisting of the capacitor C3 and the unknown coil (L<sub>x</sub>) will oscillate at a resonance frequency: <math>f = \frac{1}{2\pi\sqrt{LC}}</math> The schematic here is designed to work as a frequency counter, counting the frequency of oscillation of the aforementioned tank cirquit L<sub>x</sub>C3. Then if we know the value of C3 we can make the MCU measure the frequency, calculate L<sub>x</sub> and display it on the LCD: <math>L = (\frac{1}{2\pi f \sqrt{C}})^2</math> # Without L<sub>x</sub> connected, LM311 works as a free running multivibrator with a frequency on pin 7 ~1 Hz. When some L<sub>x</sub> is connected, pin 7 on LM311 starts oscillating with the frequency of the tank cirquit. The bigger L<sub>x</sub> the lower the frequency. Thus the upper limit of measurement will be limited by the frequency of the free running multivibrator (~1 Hz) and is therefore ~1 MH. # The rectangular pulses generated by LM311 will then be picked by the MCU, the frequency and inductance calculated and the inductance displayed on the LCD. In theory if the main oscillator frequency is 4 MHz (Tosc 0.25 μs), one cycle will be 4 x Tosc = 1 μs. An external clock signal going directly into the counter (pin T0CKI), without prescaler, should be high for longer than 2 x Tosc + 20 = 520 ns and low for at least the same time. This gives a total period of 1040 ns. Thus, the maximum input frequeny is 1/1040 ns = 961.5 KHz. If the prescaler is applied, according to the specs of PIC 16F88 the external clock input must be high/low for more than 10 ns. Consequently, the maximum countable frequency on pin T0CKI is 50 MHz. This would give a minimum measurable inductance ~10 nH. Why are we getting only 1 µH then? All boils down to the quality of the pulses LM311 in this configuration can give. The rising edge of these pulses has a relatively poor time constant, which results in a relatively slow saturation. Therefore, if the frequency is high enough the pulse will start falling before the rising edge has reached saturation, thus creating a train of jigsaw shaped pulses with an amplitude decreasing with the increase of the frequency, rather than rectangular ones. And for frequencies higher than what L<sub>x</sub> < 33 µH the pulse becomes so bad that the MCU cannot correctly interpret it. How can one go from 33 µH down to 1 µH for the minimum inductance measurement then? In the prototype I built the critical L<sub>x</sub> is 33 µH. Below this inductance the counter begins to generate more or less random numbers. But if one doesn't know that these are random numbers one might take them for real. Here L1 enters the picture. Whenever an unknown inductor is measured, it will be connected in series with L1 (added to it). Thus one will always measure at least 33 µH and will never get into the region of instability due to bad pulse shape. One adds to the code in the MCU an offset of -33 µH so that if one shortcircuits the L<sub>x</sub> input one will measure 0 µH. Now when one measures a 1 µH coil, the display will show 1 µH. If one wants to measure smaller inductances one needs to redesign the multivibrator part. ==Layouts== ==Bill of materials== ==Code== 383c2e591bd9efdcbf0d59c0902d2cf9fe8aade6 1971 1970 2013-10-03T07:55:16Z Gge002 52 wikitext text/x-wiki ==Objective== A traditional multimeter accessible to the hobbyist can measure all essential electric properties, including capacitance. The only property that still remains difficult to measure without extra investments (which can become rather essential) is inductance. Solenoids/coils are a significant part of any analogue circuit and, as opposed to all other discrete components, are often homemade. There are formulae helping to calculate parameters like number of windings, cross-section of the core etc, but one critically needs to verify the inductance of the final product. This article describes how one can build a rather accurate L-meter at home for probably less than $10. Here you will find the schematic, PCB layout, micro-controller source code; basically all you need to DIY. ==Description== The L-meter presented here is based on a rather popular solution using the LM311 comparator (see e.g. [http://electronics-diy.com/lc_meter.php]). It is stripped from the capacitance measuring capability due to micro-controller unit (MCU) source code size limitation. This limitation is dictated by the compiler I have used: MikroC PRO for PIC, ver. 6.0.0, not the MCU itself. The free license of the compiler allows up to 2k of program words (2066 to be exact, and the present code is 2065 program words). Other solutions omitting the LM311 and using built-in the MCU comparators can also be found (see e.g. [https://sites.google.com/site/vk3bhr/home/index2-html]). The MCU used in this project is PIC 16F88. The code given below is also for this MCU. The internal oscillator block is used, working at 4 MHz (selected by the OSCCON register, bits 6-4). The prescaler is set to 1:1 on the watchdog timer (OPTION_REG register, bits 2-0). ==Specs== The L-meter presented here has a lower limit of ~1 µH and an upper limit of ~1 MH (Mega Henry). Some sources (e.g. [http://electronics-diy.com/lc_meter.php]) claim lower limits as low as 10 nH, but I personally do not see how this can be achieved with the current solution. For more details see section "Theory and Schematic". Power source: 6-24 VDC adapter. ==Theory and Schematic== [[File:ChestotomerShema.png|600px|thumb|right|L-meter schematic (Erratum: J1 should receive more than 6 VDC and less than 24 VDC, not 5 VDC as in the schematic)]] The working principle of the schematic is as follows: * A tank circuit consisting of the capacitor C3 and the unknown coil (L<sub>x</sub>) will oscillate at a resonance frequency: <math>f = \frac{1}{2\pi\sqrt{LC}}</math> The schematic here is designed to work as a frequency counter, counting the frequency of oscillation of the aforementioned tank cirquit L<sub>x</sub>C3. Then if we know the value of C3 we can make the MCU measure the frequency, calculate L<sub>x</sub> and display it on the LCD: <math>L = (\frac{1}{2\pi f \sqrt{C}})^2</math> * Without L<sub>x</sub> connected, LM311 works as a free running multivibrator with a frequency on pin 7 ~1 Hz. When some L<sub>x</sub> is connected, pin 7 on LM311 starts oscillating with the frequency of the tank cirquit. The bigger L<sub>x</sub> the lower the frequency. Thus the upper limit of measurement will be limited by the frequency of the free running multivibrator (~1 Hz) and is therefore ~1 MH. * The rectangular pulses generated by LM311 will then be picked by the MCU, the frequency and inductance calculated and the inductance displayed on the LCD. Since the primary measured quantity in this project is frequency, we need to count pulses per unit time. Therefore using some kind of a counter mode of the MCU should be in order. PIC 16F88 has such a mode, as a good deal of the other PIC MCUs. This mode is selected in the OPTION_REG register (TOCS bit). When counter mode is selected, Timer0 counts the external clock pulses on RA4/AN4/T0CKI/C2OUT pin (pin 3). The timer/counter can be set to increment either on the rising or on the falling edge of every pulse arriving at RA4/AN4/T0CKI/C2OUT. This is software selectable by the T0SE (Timer0 Source Edge) bit of OPTION_REG. The counting range of the counter can be extended by the use of the prescaler or in the software. The latter technically does not increase the range of the counter, but it allows reaching very high counts. In the code below the latter method is used, since we are interested in counting every single pulse. Using a prescaler would cause inability to measure lower frequencies. In theory, if the oscillator frequency is 4 MHz (Tosc 0.25 μs), one cycle will be 4 x Tosc = 1 μs. An external clock signal going directly into the counter (pin RA4/AN4/T0CKI/C2OUT), without prescaler, should be high for longer than 2 x Tosc + 20 = 520 ns and low for at least the same time. This gives a total period of 1040 ns. Thus, the maximum input frequeny is 1/1040 ns = 961.5 KHz. If the prescaler is applied, according to the specs of PIC 16F88 the external clock input must be high/low for more than 10 ns. Consequently, the maximum countable frequency on pin RA4/AN4/T0CKI/C2OUT is 50 MHz. This would give a minimum measurable inductance ~10 nH. Why are we getting only 1 µH then? All boils down to the quality of the pulses LM311 in this configuration can give. The rising edge of these pulses has a relatively poor time constant, which results in a relatively slow saturation. Therefore, if the frequency is high enough the pulse will start falling before the rising edge has reached saturation, thus creating a train of jigsaw shaped pulses with an amplitude decreasing with the increase of the frequency, rather than rectangular ones. And for frequencies higher than what L<sub>x</sub> < 33 µH the pulse becomes so bad that the MCU cannot correctly interpret it. How can one go from 33 µH down to 1 µH for the minimum inductance measurement then? In the prototype I built the critical L<sub>x</sub> is 33 µH. Below this inductance the counter begins to generate more or less random numbers. But if one doesn't know that these are random numbers one might take them for real. Here L1 enters the picture. Whenever an unknown inductor is measured, it will be connected in series with L1 (added to it). Thus one will always measure at least 33 µH and will never get into the region of instability due to bad pulse shape. One adds to the code in the MCU an offset of -33 µH so that if one shortcircuits the L<sub>x</sub> input one will measure 0 µH. Now when one measures a 1 µH coil, the display will show 1 µH. If one wants to measure smaller inductances one needs to redesign the multivibrator part so that correctly shaped pulses are formed at higher frequencies. ==Layouts== ==Bill of materials== ==Code== f9aabf6ecb397146328daa8fbc5cd60a6952dbc3 1972 1971 2013-10-03T08:15:14Z Gge002 52 wikitext text/x-wiki ==Objective== A traditional multimeter accessible to the hobbyist can measure all essential electric properties, including capacitance. The only property that still remains difficult to measure without extra investments (which can become rather significant) is inductance. Solenoids/coils are an essential part of any analogue circuit and, as opposed to all other discrete components, are often homemade. There are formulae helping to calculate parameters like number of windings, cross-section of the core and so on for a desired inductance to be obtained, but one critically needs to verify the inductance of the final product. This article describes how one can build a rather accurate L-meter at home for probably less than $10. Here you will find the schematic, PCB layout, micro-controller source code; basically all you need to DIY. ==Description== The L-meter presented here is based on a rather popular solution using the LM311 comparator (see e.g. [http://electronics-diy.com/lc_meter.php]). It is stripped from the capacitance measuring capability due to micro-controller unit (MCU) source code size limitation. This limitation is dictated by the compiler I have used: MikroC PRO for PIC, ver. 6.0.0, not the MCU itself. The free license of the compiler allows up to 2k of program words (2066 to be exact, and the present code is 2065 program words). Other solutions omitting the LM311 and using built-in the MCU comparators can also be found (see e.g. [https://sites.google.com/site/vk3bhr/home/index2-html]). The MCU used in this project is PIC 16F88. The code given below is also for this MCU. The internal oscillator block is used, working at 4 MHz (selected by the OSCCON register, bits 6-4). The prescaler is set to 1:1 on the watchdog timer (OPTION_REG register, bits 2-0). ==Specs== The L-meter presented here has a lower limit of ~1 µH and an upper limit of ~1 MH (Mega Henry). Some sources (e.g. [http://electronics-diy.com/lc_meter.php]) claim lower limits as low as 10 nH, but I personally do not see how this can be achieved with the current solution. For more details see section "Theory and Schematic". Power source: 6-24 VDC adapter. ==Theory and Schematic== [[File:ChestotomerShema.png|600px|thumb|right|L-meter schematic (Erratum: J1 should receive more than 6 VDC and less than 24 VDC, not 5 VDC as in the schematic)]] The working principle of the schematic is as follows: * A tank circuit consisting of the capacitor C3 and the unknown coil (L<sub>x</sub>) will oscillate at a resonance frequency: <math>f = \frac{1}{2\pi\sqrt{LC}}</math> The schematic here is designed to work as a frequency counter, counting the frequency of oscillation of the aforementioned tank cirquit L<sub>x</sub>C3. Then if the value of C3 is known the MCU can measure the frequency, calculate L<sub>x</sub> and display it on the LCD: <math>L = (\frac{1}{2\pi f \sqrt{C}})^2</math> * Without L<sub>x</sub> connected, LM311 works as a free running multivibrator with a frequency on pin 7 ~1 Hz. When some L<sub>x</sub> is connected, pin 7 on LM311 starts oscillating with the frequency of the tank cirquit. The bigger L<sub>x</sub> the lower the frequency. Thus the upper limit of measurement will be limited by the frequency of the free running multivibrator (~1 Hz) and is therefore of the order of 1 MH. * The rectangular pulses generated by LM311 will then be picked by the MCU, the frequency and inductance calculated and the inductance displayed on the LCD. Since the primary measured quantity in this project is frequency, we need to count pulses per unit time. Therefore using some kind of a counter mode of the MCU should be in order. PIC 16F88 has such a mode, as a good deal of the other PIC MCUs. This mode is selected in the OPTION_REG register (TOCS bit). When counter mode is selected, Timer0 counts the external clock pulses on RA4/AN4/T0CKI/C2OUT pin (pin 3). The timer/counter can be set to increment either on the rising or on the falling edge of every pulse arriving at RA4/AN4/T0CKI/C2OUT. This is firmware selectable by the T0SE (Timer0 Source Edge) bit of OPTION_REG. The counting range of the counter can be extended by the use of the prescaler or in the firmware. The latter technically does not increase the range of the counter as such, but it allows reaching very high counts. In the code below the latter method is used, since we are interested in counting every single pulse. Using a prescaler would cause inability to measure lower frequencies. In theory, if the oscillator frequency is 4 MHz (Tosc 0.25 μs), one cycle will be 4 x Tosc = 1 μs. An external clock signal going directly into the counter (pin RA4/AN4/T0CKI/C2OUT), without prescaler, should be high for longer than 2 x Tosc + 20 = 520 ns and low for at least the same time. This gives a total period of 1040 ns. Thus, the maximum input frequeny is 1/1040 ns = 961.5 KHz. If the prescaler is applied, according to the specs of PIC 16F88 the external clock input must be high/low for more than 10 ns. Consequently, the maximum countable frequency on pin RA4/AN4/T0CKI/C2OUT is 50 MHz. This would give a minimum measurable inductance ~10 nH. Why are we getting only 1 µH then? All boils down to the quality of the pulses LM311 in this configuration can give. The rising edge of these pulses has a relatively poor time constant, which results in a relatively slow saturation. Therefore, if the frequency is high enough the pulse will start falling before the rising edge has reached saturation, thus creating a train of jigsaw shaped pulses with an amplitude decreasing with the increase of the frequency, rather than rectangular ones. And for frequencies higher than what L<sub>x</sub> < 33 µH can give the pulse becomes so bad that the MCU cannot correctly interpret it. How can one go from 33 µH down to 1 µH for the minimum inductance measurement then? In the prototype I built the critical L<sub>x</sub> is 33 µH. Below this inductance the counter begins to generate more or less random numbers. But if one doesn't know that these are random numbers one might take them for real. Here L1 enters the picture. Whenever an unknown inductor is measured, it will be connected in series with L1 (added to it). Thus, at least 33 µH will always be measured and the system will never get into the region of instability due to bad pulse shape. Then an offset of -33 µH is added in the firmware so that if the L<sub>x</sub> input is short circuited 0 µH will be displayed. Now when a 1 µH coil is measured, the display will show 1 µH. If smaller inductances are to be measured the multivibrator part needs to be redesigned, so that correctly shaped pulses are formed at higher frequencies. ==Layouts== ==Bill of materials== ==Code== a1e9cdaab8325a32ec9f899b62d70c07136ee3f3 File:ChestotomerShema.png 6 447 1967 2013-09-30T16:52:30Z Gge002 52 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 1968 1967 2013-09-30T17:00:40Z Gge002 52 Gge002 uploaded a new version of &quot;[[File:ChestotomerShema.png]]&quot; wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:GMtube.jpg 6 448 1974 2013-10-03T09:45:07Z Gge002 52 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Bore hole probe 0 449 1975 2013-10-03T09:50:00Z Gge002 52 Created page with "==GM counter== [[File:GMtube.jpg|200px|thumb|right|ZP1200 circuitry]] The GM counter for this project is ZP1200." wikitext text/x-wiki ==GM counter== [[File:GMtube.jpg|200px|thumb|right|ZP1200 circuitry]] The GM counter for this project is ZP1200. c3ace28797127ab704934410ebb2eaaab8c0ec89 1977 1975 2013-10-04T11:35:06Z Gge002 52 wikitext text/x-wiki ==Project description== In this project, radioactivity measurements will be performed in several Boreholes around Bergen region. Boreholes are drilled to provide thermal energy coming from hot underground water that is used to heat buildings. The goal of this project is to perform radioactivity measurements as a function of depth in Boreholes. The radioactivity will be monitored by means of a Geiger-Muller (GM) counter (Figure 1 shows the details of the detector to be utilized in this work). This is a gas-filled, cylindrical radiation counter that has found many industrial applications such as level gauges in the oil and gas industry. This is primarily due to the GM counter's robustness, low cost, simple read-out electronics and insensitivity to pressure and temperature changes in the environment. GM counters are also relatively insensitive to mechanical vibrations. These properties of the counter make it a good alternative for the pertinent measurements, as these will be carried out at varying depths in the boreholes. The counter will need to be lowered down as deep as 300 m. In order to carry out measurements across very long cables, there will be a need for a special detector data acquisition (DAQ) system, which includes electronic micro-controller, amplifier, pulse inverter, and hardware control programming. The project will start by designing the aforementioned DAQ system. Following a successful design, the system will be fabricated/built and tested. Once this is ready one can start measuring activities in Boreholes around the Bergen area. Students who are interested in radiation detection and detector readout electronics are very welcome. ==Supervisors== Prof. Dr. Bjarne Stugu Dr. Ilker Meric Dr. Enver Alagoz ==GM counter== [[File:GM_tube2.jpg|200px|thumb|right|Figure 1. Cross-sectional view of the ZP1200 GM counter. All dimensions are given in mm.]] [[File:GMtube.jpg|200px|thumb|right|Figure 2. ZP1200 circuitry]] The GM counter for this project is ZP1200. This is a Na-Halogen filled GM with a 446 stainless steel cathode. Its effective length is 38.1 mm. Operates in the temperature range from -40°C to +75°C. It has a max starting voltage of 325 V, an operating voltage range from 450 V to 650 V, recommended operating voltage of 500 V and a max slope of the plateau 6%/100V. The dead time of the detector is minimum 90 µs. It weighs 8 g. 58fc896a6d592740a630721aed9074d7143b7afb File:GM tube2.jpg 6 450 1976 2013-10-04T11:20:46Z Gge002 52 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 SmartFusion2- AMBA APB, Custom Peripheral 0 424 1979 1978 2013-10-22T12:50:15Z Cto070 76 wikitext text/x-wiki =Intro= This tutorial explains how to implement and test a custom AMBA APB (Advanced Peripheral Bus) module. The tutorial will create a SmartFusion2 MSS (Microcontroller Subsystem) with APB bus interface. The custom module will be connected to the APB bus to map from APB bus to a DCS bus. Connected to the DCS part there will be a test module, which you can write and read from. The MSS will also have a GPIO module connected to a LED and serial UART peripheral. =Before you start= Make sure you have installed Libero and have a valid license, as described in [[SmartFusion2]]. This tutorial assumes Libero v11.1 is used and that you are using the SmartFusion2 starter kit from Microsemi. =Create new project= Start Libero SoC v11.1. Press ''Project'' and ''New Project''. Name your project ''APB_custom_peripheral''. Use system tools ''SmartFusion2 Microcontroller Subsystem (MSS)''. <br>[[File:New_project.jpg|400 px]] =Modify MSS= Double click on the MSS component to modify it. A new window will open. Enable/Disable peripherals until your MSS looks like the image below. <br> Tip: click ''View > Maximize Work Area'' or ''CTRL+W'' to expand the working area while enabling and disabling the MSS peripherals.<br> [[File:Modified_MSS.jpg|600 px]] Click on the configuration button for the enabled peripherals, and configure them like the following images<br> [[File:MSS_CCC.jpg|600 px]]<br> MSS CCC<br>[[File:MSS_reset.jpg|200 px]]<br> Reset Controller<br>[[File:FIC0.jpg|400px]]<br> FIC 0<br>[[File:MMUART.jpg|400 px]]<br> MMUART 0 Your MSS should now look like this: <br>[[File:MSS_finished.jpg|600 px]] =SmartDesign= Close the MSS configuration window. On the SmartDesign canvas, right click on the MSS component and ''Update instance(s) with Latest Component''.<br> From ''Catalog'' add the following components: '''CoreAPB3''' from ''Bus Interfaces'', <br> [[File:CoreAPB3_config.jpg|400 px]] '''Chip Oscillators''' and '''Clock Conditioning Circuitry''' from ''Clock & Management'' <br> [[File:Chip_osc.jpg|500 px]][[File:CCC_core.jpg|400 px]]<br> Now import all the vhdl files which are included at the bottom of the page. Save the files with the names specified in the text. The files can be included by clicking ''File'', ''Import'', ''HDL Source Files''. These files can now be found under ''hdl'' in the ''Files'' tab and in ''Design Hierarchy''. In ''Design Hierarchy'' right click on ''DCS_test'', choose ''Create Core from HDL''. Answer ''No'' to question about adding bus interfaces to core. Right click on ''apb_to_dcs'' and choose ''Create Core from HDL''. Choose ''Yes'' on question about adding bus interfaces to core. Choose ''Add/Edit bus interfaces...''. In next window, click ''Add Bus Interface...'', choose ''APB, AMBA, AMBA2, slave''. Connect ''PSELx'' to ''psel''.<br> [[File:Module_bus_interface.jpg|500 px]] Add the modules you made to the SmartDesign. In design canvas, right click and choose ''Auto Connect'' followed by ''Auto Arrange Instances''. Right click on ''MSS_RESET_N_F2M'' and ''GPIO_FABRIC'' and select ''Promote to Top Level''. Right click on ''reset_from_siu'' and choose ''Tie Low''. Connect the unconnected wires. The result should look something like the image below<br> [[File:SmartDesign_finished.jpg|700 px]] Generate component by clicking ''SmartDesign'' and ''Generate Component''. =Pre-synthesized Simulation= To simulate the functionality of the abp_to_dcs module, normal APB bus functionality from the MSS should be used. To do this you can add a .bfm file (Bus Functional Model). Copy the following to the User.bfm in your project, located under ''Files'' and ''simulation''. #=========================================================== # Enter your BFM commands in this file. # # Syntax: # ------- # # memmap resource_name base_address; # # write width resource_name byte_offset data; # read width resource_name byte_offset; # readcheck width resource_name byte_offset data; # #=========================================================== #include "subsystem.bfm" procedure user_main; # perform subsystem initialization routine # call subsystem_init; # add your BFM commands below: memmap apb_to_dcs_0 0x50000000; write w apb_to_dcs_0 0x0 0x12345678; write w apb_to_dcs_0 0x4 0xBEEFFACE; write w apb_to_dcs_0 0x8 0xABCDEF12; write w apb_to_dcs_0 0xC 0x44556622; readcheck w apb_to_dcs_0 0x0 0x12345678; readcheck w apb_to_dcs_0 0x4 0xBEEFFACE; readcheck w apb_to_dcs_0 0x8 0xABCDEF12; readcheck w apb_to_dcs_0 0xC 0x44556622; write w apb_to_dcs_0 0x10 0x98765432; write w apb_to_dcs_0 0x14 0xABBABABE; write w apb_to_dcs_0 0x18 0x12345ABC; write w apb_to_dcs_0 0x1C 0xDEADBEEF; readcheck w apb_to_dcs_0 0x10 0x98765432; readcheck w apb_to_dcs_0 0x14 0xABBABABE; readcheck w apb_to_dcs_0 0x18 0x12345ABC; readcheck w apb_to_dcs_0 0x1C 0xDEADBEEF; return Next, go to ''Project'' and then ''Project Settings''. Choose ''DO File'' under ''Simulation Options''. You can use the run.do file supplied below. If you want to use automatic .do file and add signals yourself you can use standard settings, but be sure to change simulation time to 150 us. The system has got some initialization time, which takes around 120 us with this setup, before the bus signals start to change. quietly set ACTELLIBNAME SmartFusion2 quietly set PROJECT_DIR "C:/Microsemi/Projects/APB_custom_peripheral" source "${PROJECT_DIR}/simulation/CompileDssBfm.tcl";source "${PROJECT_DIR}/simulation/bfmtovec_compile.tcl"; if {[file exists presynth/_info]} { echo "INFO: Simulation library presynth already exists" } else { vlib presynth } vmap presynth presynth vmap SmartFusion2 "C:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" if {[file exists COREAPB3_LIB/_info]} { echo "INFO: Simulation library COREAPB3_LIB already exists" } else { vlib COREAPB3_LIB } vmap COREAPB3_LIB "COREAPB3_LIB" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral_MSS/APB_custom_peripheral_MSS.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/dcs_interface_pkg.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/apb_to_dcs.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/mtest.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/hdl/DCS_test.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/FCCC_0/APB_custom_peripheral_FCCC_0_FCCC.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/OSC_0/APB_custom_peripheral_OSC_0_OSC.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_muxptob3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3_iaddr_reg.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/coreapb3.vhd" vcom -93 -explicit -work COREAPB3_LIB "${PROJECT_DIR}/component/Actel/DirectCore/CoreAPB3/4.0.100/rtl/vhdl/core_obfuscated/components.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/APB_custom_peripheral.vhd" vcom -93 -explicit -work presynth "${PROJECT_DIR}/component/work/APB_custom_peripheral/testbench.vhd" vsim -L SmartFusion2 -L presynth -L COREAPB3_LIB -t 1fs presynth.testbench add wave \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PREADY \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSLVERR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MCCC_CLK_BASE_PLL_LOCK \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_F2M \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PADDR \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PENABLE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PSEL \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PRDATA \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/FIC_0_APB_M_PWRITE \ sim:/testbench/APB_custom_peripheral_0/APB_custom_peripheral_MSS_0/MSS_RESET_N_M2F add wave \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/penable \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/psel \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwrite \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/paddr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pwdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/prdata \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pslverr \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/clk \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_n \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/reset_from_siu \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/global_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/rcu_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/fec_reset \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/pready \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/apb_to_dcs_0/siu_bg add wave \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/we_dcs \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBadd \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_busBdata_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bi \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/dcs_br \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/siu_bg \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/wr_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/rd_en \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/address \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_in \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/data_out \ sim:/testbench/APB_custom_peripheral_0/DCS_test_0/mtest_map/myram run 150 us Double click on ''Simulate'' in Design Flow under ''Verify Pre-Synthesized Design'' which will start ModelSim.<br> [[File:Presynth_transcript.jpg|400 px]]<br>[[File:Presynth_wave.jpg|700 px]] =Constraints, Synthesize and Place&Route= Go to ''Project'', ''Project Settings'', ''Device I/O Settings'' and set ''Default I/O Technology'' to ''LVCMOS 3.3V''. Import the Physical Design Constraint file supplied below. Name it Fabric_top.pdc. # Microsemi I/O Physical Design Constraints file # Auto Generated User I/O Constraints file # Version: v11.1 11.1.0.14 # Family: SmartFusion2 , Die: M2S050T_ES , Package: 896 FBGA # Date generated: Fri Sep 20 10:03:27 2013 # # User Locked I/O Bank Settings # set_iobank Bank0 -vcci 1.80 -fixed yes set_iobank Bank1 -vcci 3.30 -fixed yes set_iobank Bank2 -vcci 3.30 -fixed yes set_iobank Bank3 -vcci 3.30 -fixed yes set_iobank Bank4 -vcci 3.30 -fixed yes set_iobank Bank8 -vcci 3.30 -fixed yes # # Unlocked I/O Bank Settings # The I/O Bank Settings can be locked by directly editing this file # or by making changes in the I/O Attribute Editor # # # User Locked I/O settings # set_io MMUART_0_RXD -pinname L23 -fixed yes set_io MMUART_0_TXD -pinname H27 -fixed yes set_io MSS_RESET_N_F2M \ -pinname F30 \ -fixed yes \ -RES_PULL Up \ -DIRECTION INPUT set_io GPIO_0_M2F \ -pinname G30 \ -fixed yes \ -DIRECTION OUTPUT The file is imported by clicking ''File'', ''Import'', ''I/O Constraints (PDC) Files''. Once this is included, scroll in ''Design Flow'' to ''Place and Route'' and right click. Select ''Configure Options'' and uncheck ''Timing Driven''. Now you can click on the "Play" button, Generate Programming Data. This process will take some time. If all succeeds, you should be able to program your FPGA. Program it by connecting power and FlashPro Programmer and click on ''Run Programming Action''. =Create Test Software= To write test application software, scroll to the bottom of the Design Flow and click ''Write Application Code''. This will open SoftConsole from Microsemi. You can replace the main.c with the following: #include "unistd.h" #include <stdio.h> #include "drivers/mss_uart/mss_uart.h" #include "drivers/mss_gpio/mss_gpio.h" //Initialize registers to read/write #define APB_TO_DCS_0 0x50000000U #define MEM1 (*(volatile int32_t *) 0x50000000) #define MEM2 (*(volatile int32_t *) 0x50000004) #define MEM3 (*(volatile int32_t *) 0x50000008) #define MEM4 (*(volatile int32_t *) 0x5000000C) #define MEM5 (*(volatile int32_t *) 0x50000010) #define MEM6 (*(volatile int32_t *) 0x50000014) #define MEM7 (*(volatile int32_t *) 0x50000018) #define MEM8 (*(volatile int32_t *) 0x5000001C) //Define a constant delay value #define DELAY_LOAD_VALUE 0x00080000 //about half a second int main() { /* * Initialize MSS GPIOs. */ MSS_GPIO_init(); /* * Configure MSS GPIO pin */ MSS_GPIO_config( MSS_GPIO_0 , MSS_GPIO_OUTPUT_MODE ); /* * Set initial state of GPIO pin */ MSS_GPIO_set_output(MSS_GPIO_0,0); //Using UART 0 mss_uart_instance_t * const gp_my_uart = &g_mss_uart0; /* * Using one delay to write and one delay to read */ volatile int32_t delay_count_1 = 0; volatile int32_t delay_count_2 = 0; delay_count_1 = DELAY_LOAD_VALUE/2; delay_count_2 = DELAY_LOAD_VALUE; /* * Variable to read value from memory to set led */ uint8_t led; /* * Incrementing value to be written to memory */ int32_t i = 0; /* * Variables to hold values read from memory */ int32_t m1,m2,m3,m4,m5,m6,m7,m8; /* * data to be sent on UART, holding chopped memory data */ uint8_t data[4]; /*-------------------------------------------------------------------------- * Initialize and configure UART. */ MSS_UART_init(gp_my_uart, MSS_UART_57600_BAUD, MSS_UART_DATA_8_BITS | MSS_UART_NO_PARITY | MSS_UART_ONE_STOP_BIT); MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r*******************Hello World*********************\n\r"); //Always while( 1 ) { -- delay_count_1; -- delay_count_2; /* * Updating memory values */ if (delay_count_1 <= 0) { delay_count_1 = DELAY_LOAD_VALUE; MEM1 = i; MEM2 = i+1; MEM3 = i+2; MEM4 = i+3; MEM5 = i+4; MEM6 = i+5; MEM7 = i+6; MEM8 = i+7; } /* * Reading memory values */ if (delay_count_2 <= 0) { delay_count_2 = DELAY_LOAD_VALUE; m1 = MEM1; if(m1 != i) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 1 is different from expected! *****\n\r"); } /* * Chopping data from memory, sending it to UART. * Reading hex/binary values from console */ data[3] = m1; data[2] = m1 >>8; data[1] = m1 >>16; data[0] = m1 >>24; MSS_UART_polled_tx(gp_my_uart, data, sizeof(data)); m2 = MEM2; if(m2 != i+1) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 2 is different from expected! *****\n\r"); } m3 = MEM3; if(m3 != i+2) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 3 is different from expected! *****\n\r"); } m4 = MEM4; if(m4 != i+3) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 4 is different from expected! *****\n\r"); } m5 = MEM5; if(m5 != i+4) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 5 is different from expected! *****\n\r"); } m6 = MEM6; if(m6 != i+5) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 6 is different from expected! *****\n\r"); } m7 = MEM7; if(m7 != i+6) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 7 is different from expected! *****\n\r"); } m8 = MEM8; if(m8 != i+7) { MSS_UART_polled_tx_string(gp_my_uart,(const uint8_t*) "\n\r**** Data read on memory location 8 is different from expected! *****\n\r"); } /* * Read last bit of current value of m1 and set GPIO (led) according to the bit value * Bit should toggle for every read cycle */ led = m1 & 0x00000001; MSS_GPIO_set_output(MSS_GPIO_0,led); ++i; } } } The application will write data to RAM and then read it. A LED is linked to the LSB of the read data, which cause the LED to blink. Data read on first memory location is written to the UART, and can be observed with a serial terminal program. Note that serial data sent on the UART is counting binary, and ASCII format is not implemented. The UART also sends out a message on the UART if the read data is different from expected. Build Debug Application by pressing ''Debug Configurations'' and then choose ''Microsemi Cortex M3 Target''. Press ''Apply'', build debug target and launch debug target. <br> [[File:Debug_configuration.jpg|600 px]]<br>[[File:Debugging.jpg|600px]]<br>[[File:Debug_binary_count.jpg|600px]]<br> =VHDL files= ------------------------------------------------------------------------------- -- Title : APB_to_DCS -- Project : RCU2 ------------------------------------------------------------------------------- -- File : apb_to_dcs.vhd -- Last edited by : Christian Torgersen -- Last update : 30.09.2013 - 09:26 -- Current Revision : 1.0 ------------------------------------------------------------------------------- -- Description : Mapping between AMBA APB and DCS bus. ------------------------------------------------------------------------------- -- Revision History : ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway -- This file has been written by Christian Torgersen -- Christian.torgersen@student.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; library work; use work.dcs_interface_pkg.all; entity apb_to_dcs is port( --APB input control signals penable : in std_logic; -- APB enable signal. Asserted high on second pulse psel : in std_logic; -- APB slave select from master pwrite : in std_logic; -- APB direction setting --APB input and addr paddr : in std_logic_vector(31 downto 0); -- APB address pwdata : in std_logic_vector(31 downto 0); -- APB write data --APB output signals prdata : out std_logic_vector(31 downto 0); -- APB read data pready : out std_logic; -- APB hold signal, for read/write more than 2 cycles pslverr : out std_logic; -- APB slave error signal clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity reset_from_siu : in std_logic; -- asynch reset from SIU, positive polarity --internal resets global_reset : out std_logic; -- global reset, positive polarity rcu_reset : out std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : out std_logic; -- reset for FEC, positive polarity --DCS bus signals we_dcs : out std_logic; -- write enable to the internal modules dcs_busBadd : out std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : out std_logic; -- interrupt in case DCS needs bus dcs_bg : in std_logic; -- dcs bus grant from arbiter dcs_br : out std_logic; -- dcs bus request to arbiter siu_bg : in std_logic -- siu bus grant from arbiter ); end apb_to_dcs; architecture arc of apb_to_dcs is --signal declarations type state is (s_idle, s_wait_for_grant, s_grant, s_error); signal current_state, next_state : state; -- signal resetting : std_logic; -- high when the resetting addresses are received, only used by dcs_addr signal timeout :std_logic; signal timeout_cnt :std_logic_vector(6 downto 0); signal timeout_cnt_en :std_logic; signal we_dcs_i :std_logic; begin --combinatorics timeout <= timeout_cnt(6); we_dcs <= we_dcs_i; dcs_br <= '1' when (psel = '1'and (next_state = s_wait_for_grant or next_state = s_grant)) else '0'; dcs_busBadd <= paddr(15 downto 0); --linking between APB and dcs addresses dcs_busBdata_out <= pwdata when (pwrite='1' and dcs_bg= '1') else (others => '0'); -- APB to DCS data prdata <= dcs_busBdata_in when (pwrite ='0' and dcs_bg= '1') else (others => '0'); -- DCS to APB data -- purpose: timeout counter for transaction p_timeout_cnt: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt <= (others => '0'); elsif rising_edge(clk) then if (timeout_cnt_en = '1') then timeout_cnt <= timeout_cnt + 1; else timeout_cnt <= (others => '0'); end if; end if; end process p_timeout_cnt; -- purpose: state machine driver p_state_driver: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then current_state <= s_idle; elsif rising_edge(clk) then current_state <= next_state; end if; end process p_state_driver; --purpose: set next state p_next_state: process(current_state, dcs_bg, timeout, psel, penable) begin case current_state is when s_idle => if (dcs_bg = '1' and psel = '1' and penable = '0') then -- giving two cycle read/write possibility next_state <= s_grant; elsif (dcs_bg = '0' and psel = '1' and penable = '0') then --Three or more cycle read/write next_state <= s_wait_for_grant; else next_state <= s_idle; end if; when s_wait_for_grant => if (dcs_bg = '1') then next_state <= s_grant; elsif (timeout = '1') then next_state <= s_error; else next_state <= s_wait_for_grant; end if; when s_grant => next_state <= s_idle; when s_error => next_state <= s_idle; when others => next_state <= s_idle; end case; end process p_next_state; -- purpose: set outputs of module and internal signals p_output: process(clk, reset_n, reset_from_siu) begin if (reset_n = '0' or reset_from_siu = '1') then timeout_cnt_en <= '0'; we_dcs_i <= '0'; pslverr <= '0'; pready <= '1'; elsif rising_edge(clk) then --defaults case current_state is when s_idle => pslverr <= '0'; timeout_cnt_en <= '0'; when s_wait_for_grant => when s_grant => we_dcs_i <= '0'; pready <= '1'; when s_error => pslverr <= '1'; pready <= '1'; timeout_cnt_en <= '0'; when others => --defaults end case; case next_state is when s_idle => pready <= '1'; when s_wait_for_grant => timeout_cnt_en <= '1'; pready <= '0'; when s_grant => timeout_cnt_en <= '0'; pready <= '1'; we_dcs_i <= pwrite; when others => end case; end if ; end process p_output; --purpose: resets p_reset : process(clk, reset_n) begin if (reset_n = '0') then global_reset <= '1'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '1'; fec_reset <= '1'; elsif rising_edge(clk) then global_reset <= '0'; -- send reset when the circuit is being globally reseted by the reset line rcu_reset <= '0'; fec_reset <= '0'; if (we_dcs_i = '1') then case (paddr(15 downto 0)) is when c_global_reset => global_reset <= '1'; when c_rcu_reset => rcu_reset <= '1'; when c_fec_reset => fec_reset <= '1'; when others => -- do nothing end case; end if; end if; end process p_reset; --Purpose: Set up bus interrupt p_bus_int: process (clk, reset_n, reset_from_siu) begin if( reset_n = '0' or reset_from_siu = '1') then dcs_bi <= '0'; elsif (rising_edge(clk)) then if(siu_bg = '0' or dcs_bg = '1') then --do not interrupt if we have grant dcs_bi <= '0'; elsif (paddr (15 downto 0) = c_arbiter_irq) then dcs_bi <= '1'; end if; end if; end process p_bus_int; end architecture arc; ------------------------------------------------------------------------------- -- Title : DCS interface Package -- Project : RCU DCS interface ------------------------------------------------------------------------------- -- File : $RCSfile: dcs_interface_pkg.vhd,v $ -- Last edited by : $Author: alme $ -- Last update : $Date: 2008/02/15 12:23:43 $ -- Current Revision : $Revision: 1.4 $ ------------------------------------------------------------------------------- -- Description : Constant and function library for RCU Trigger Receiver -- design ------------------------------------------------------------------------------- -- Revision History : -- http://portal1.ift.uib.no/cgi-bin/viewcvs.cgi/vhdlcvs/rcu_cpld/ ------------------------------------------------------------------------------- -- -- This file is property of and copyright by the Instrumentation and -- Electronics Section, Dep. of Physics and Technology -- University of Bergen, Norway, 2005 -- This file has been written by Johan Alme -- Johan.Alme@ift.uib.no -- -- Permission to use, copy, modify and distribute this firmware and its -- documentation strictly for non-commercial purposes is hereby granted -- without fee, provided that the above copyright notice appears in all -- copies and that both the copyright notice and this permission notice -- appear in the supporting documentation. The authors make no claims -- about the suitability of this software for any purpose. It is -- provided "as is" without express or implied warranty. -- ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; package dcs_interface_pkg is -- address information (this should be moved to a global adress mapping definition file.) -- memory spaces. -- Safety module address. Always ack these. constant c_MSM_space : std_logic_vector(3 downto 0):=X"8"; -- Actel space should NEVER be acked constant c_Actel_space : std_logic_vector(3 downto 0):=X"B"; -- treat as normal except for the subadresses 0xA00 and 0xA01 that should not be acked. constant c_trigger_space : std_logic_vector(3 downto 0):=X"4"; -- sub adresses -- belongs to trigger space. The two addresses are defined on the DCS board and should not be acked. constant c_dcsSetBunchReset : std_logic_vector(11 downto 0):= X"A00"; constant c_dcsSetEventReset : std_logic_vector(11 downto 0):= X"A01"; constant c_global_reset : std_logic_vector(15 downto 0):= X"5300"; constant c_fec_reset : std_logic_vector(15 downto 0):= X"5301"; constant c_rcu_reset : std_logic_vector(15 downto 0):= X"5302"; constant c_arbiter_irq : std_logic_vector(15 downto 0):= X"5310"; -- interrupts SIU grant constant c_grant : std_logic_vector(15 downto 0):= X"5311"; -- grant information given --Constant defining mem mapped mode on which the interface should be active constant c_memMappedMode0 : std_logic_vector(1 downto 0) := "00"; constant c_memMappedMode1 : std_logic_vector(1 downto 0) := "11"; end package dcs_interface_pkg; -------------------------------------------------------------------------------- -- Company: University of Bergen -- -- File: DCS_test.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- Component used to test functionality of apb_to_dcs bridge -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: Christian Torgersen -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; entity DCS_test is port ( clk : in std_logic; -- global clock (40 MHz) reset_n : in std_logic; -- asynch reset, negative polarity global_reset : in std_logic; -- global reset, positive polarity rcu_reset : in std_logic; -- reset for RCU Xilinx fw, positive polarity fec_reset : in std_logic; -- reset for FEC, positive polarity we_dcs : in std_logic; -- write enable to the internal modules dcs_busBadd : in std_logic_vector(15 downto 0); -- address passed through dcs_busBdata_in : in std_logic_vector(31 downto 0); -- data from internal modules to DCS dcs_busBdata_out : out std_logic_vector(31 downto 0); -- data to internal modules from DCS dcs_bi : in std_logic; -- interrupt in case DCS needs bus dcs_bg : out std_logic; -- dcs bus grant from arbiter dcs_br : in std_logic; -- dcs bus request to arbiter siu_bg : out std_logic -- siu bus grant from arbiter ); end DCS_test; architecture arch of DCS_test is -- signal, component etc. declarations signal data_outs :std_logic_vector(31 DOWNTO 0); signal wr_enable, rd_enable : std_logic; component mtest port( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end component; begin mtest_map: mtest port map( clk => clk, nreset => reset_n, wr_en => wr_enable, rd_en => rd_enable, address => dcs_busBadd(7 downto 0), data_in => dcs_busBdata_in, data_out => dcs_busBdata_out ); --dcs_busBdata_out <= data_outs; siu_bg <= '0'; rd_enable <= not(we_dcs); wr_enable <= we_dcs; -- to be used if checking two cycle read/write: --dcs_bg <= '1'; -- Used to test arbitration and wait states: p_arbitration: process (clk, reset_n) begin if reset_n = '0' then dcs_bg <= '1'; data_outs <= (others => '0'); elsif rising_edge(clk) then if (dcs_br = '1') then dcs_bg <= '1'; else dcs_bg<= '0'; end if; end if; end process p_arbitration; end arch; -------------------------------------------------------------------------------- -- Company: <Name> -- -- File: mtest.vhd -- File history: -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- <Revision number>: <Date>: <Comments> -- -- Description: -- -- <Description here> -- -- Targeted device: <Family::SmartFusion2> <Die::M2S050T_ES> <Package::896 FBGA> -- Author: <Name> -- -------------------------------------------------------------------------------- library IEEE; use IEEE.std_logic_1164.all; use ieee.numeric_std.all; entity mtest is port ( clk : IN std_logic; nreset : IN std_logic; wr_en : IN std_logic; rd_en : IN std_logic; address : IN std_logic_vector(7 DOWNTO 0); data_in : IN std_logic_vector(31 DOWNTO 0); data_out : OUT std_logic_vector(31 DOWNTO 0) ); end mtest; architecture arch of mtest is -- signal, component etc. declarations type memory IS ARRAY (0 TO 31) of std_logic_vector(31 DOWNTO 0); --type memory IS ARRAY (31 DOWNTO 0) of std_logic_vector; signal myram: memory; --attribute ram_init_file: STRING; --attribute ram_init_file OF myram: SIGNAL IS "ram_contents.mif"; begin -- generation of data_out process(clk,nreset) begin if (nreset='0') then data_out <= x"0000_0000"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- data_out <= x"0000_0000"; -- elsif(rd_en='1') then if(rd_en='1') then data_out <= myram(to_integer(unsigned(address))); end if; end if; end process; -- writing data to memory process(clk,nreset) begin if (nreset='0') then myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; elsif (clk'EVENT AND clk='1') then -- if (nreset='0') then -- myram(to_integer(unsigned(address))) <= x"DEAD_BEEF"; -- elsif(wr_en='1') then if (wr_en='1') then myram(to_integer(unsigned(address))) <= data_in; end if; end if; end process; end arch; [[Category:Mikroelektronikk]] 28bb95c0ca714855b2affda72e446d401baa1840 SmartFusion2 0 416 1980 1889 2013-11-16T20:04:33Z Lbr088 56 Added solution for Libero locked session problem wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Other designfiles and documents can be found here: http://emcraft.com/products/153 Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= * Rightclick in the library pan of Questasim and choose new->Library. * Choose "A map to an existing library". * Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. * Include the library in the files where you need SF2 cores The same applies for other actel devices. =Libero errors, warnings and problems= * If you get "Warning: CMP008: module_name is not an Actel cell defined in the cell library." it means the mentioned module was not included in the synthesis and thus assumed to be an Actel standard module. Rightclick synthesis and select "Organize input files->Organize source files" select the mentioned module and press add. * Generate programming data fails without explanation: Constraint format has changed between Libero versions. Generate a new constraint file using the I/O editor based on the data in the old constraint file. * When a project is opened, if there is a message saying that the project is already open in another instance of Libero, go to the folder ''tooldata'' in the project directory and delete a file called ''libero.xyzv''. Where xyzv is some four digit number. 1c412e5efcc74a357468aebebade121e68baa5c3 RCU2 Software Development Firmware 0 451 1981 2013-11-27T16:20:50Z Lbr088 56 Initilized page wikitext text/x-wiki == Init == 045c5cc8c158e37f95e88d10586b9bcbed052968 1982 1981 2013-11-27T17:16:28Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]. The firmware is compiled for the SmartFusion2 Starter Kit Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. ... f6fef77c140043f692c039a2bcae7ab4bce98a25 1983 1982 2013-11-27T21:06:03Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]. The firmware is compiled for the SmartFusion2 Starter Kit. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. More to come... 370d053cfd721b8fb7e53e77e2687afeac19d016 1984 1983 2013-11-28T09:52:41Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Set Up the SF2 Target == == Boot Linux Image == The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image. === Setup U-Boot enviroment === For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update <references /> 690edd1a27ac1bf42e3bc8455fc18ecbdbdbb559 1985 1984 2013-11-28T10:12:04Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Set Up the SF2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image. === Setup U-Boot enviroment === For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. <references /> 050f95840b77c664b5a8654369bf41385e5b931c 1986 1985 2013-11-28T10:20:49Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Set Up the SF2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rcu2linux/blob/master/rcu2linux.uImage?raw=true Github]. === Setup U-Boot enviroment === For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. <references /> b3fc47123920683db1b9fbf8410e99e32169a037 1987 1986 2013-11-28T10:21:28Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Set Up the SF2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rcu2linux/blob/master/rcu2linux.uImage?raw=true Github]. === Setup U-Boot enviroment === For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == References == <references /> 8bc521df9831d401adad6399c52bad75b734b5ed 1988 1987 2013-11-28T10:22:28Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rcu2linux/blob/master/rcu2linux.uImage?raw=true Github]. === Setup U-Boot enviroment === For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == References == <references /> b85a5ea4d9c7860b746bd0c23fd4fa560eef9485 1989 1988 2013-11-28T10:23:08Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rcu2linux/blob/master/rcu2linux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == References == <references /> f9310c8532c7937e57e328fa8d42823528e74ef8 1990 1989 2013-11-28T10:23:34Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rcu2linux/blob/master/rcu2linux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == References == <references /> ea4698ff35043c6bd9f5cb22736a4ae0be0e8a57 1993 1990 2013-11-28T10:42:03Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices. Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rcu2linux/blob/master/rcu2linux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == References == <references /> ddb81f08dab538f4e26e12f589868709b496d7d1 1994 1993 2013-11-28T12:26:02Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rcu2linux/blob/master/rcu2linux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rcu2linux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rcu2linux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == References == <references /> 9c6df16f479d5d326f16f111a4a918a2e2251fd3 1995 1994 2013-11-29T00:10:49Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 123.234.345.29 setenv serverip 123.234.345.12 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 172.17.1.20:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''test.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == References == <references /> 1edfce0cb413efea00062ee6ad845928b8b4bfe8 2010 1995 2014-01-06T12:11:42Z Lbr088 56 Updated with known problems wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> 87611746b1c3a9aeb7f095ee7c5c15a1669bd2c8 2011 2010 2014-01-06T12:14:14Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here (11.1)]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> d6f446a9896dc4e4c140b6c8e3f8210239e8044f 2012 2011 2014-01-06T12:17:00Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here (11.1)] or [http://www.tidsreise.com/rcu/System_w_Linux_11_2.zip here (11.2)]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> 46153ee3a778ca1b31ec7bd8712f424cf7aaa8a4 2016 2012 2014-03-10T09:58:22Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here (11.1)] or [http://www.tidsreise.com/rcu/System_w_Linux_11_2.zip here (11.2)]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update You should see something like this <verbatim> M2S-SOM> run update Using M2S_MAC device TFTP from server 192.168.1.10; our IP address is 192.168.1.11 Filename 'rculinux/rculinux.uImage'. Load address: 0xa0007fc0 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######################################### done Bytes transferred = 1869376 (1c8640 hex) 16384 KiB S25FL128S_64K at 0:0 is now current device Saving Environment to SPI Flash... Erasing SPI flash...Writing to SPI flash...done </verbatim> == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> b91696e3ddd29ff120f217f8cb88862937e5fa17 2017 2016 2014-03-10T09:59:03Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here (11.1)] or [http://www.tidsreise.com/rcu/System_w_Linux_11_2.zip here (11.2)]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update You should see something like this M2S-SOM> run update Using M2S_MAC device TFTP from server 192.168.1.10; our IP address is 192.168.1.11 Filename 'rculinux/rculinux.uImage'. Load address: 0xa0007fc0 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######################################### done Bytes transferred = 1869376 (1c8640 hex) 16384 KiB S25FL128S_64K at 0:0 is now current device Saving Environment to SPI Flash... Erasing SPI flash...Writing to SPI flash...done == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> 31c92eb8472a436c8bca909d527d82a6202a6ad0 2018 2017 2014-03-10T09:59:20Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here (11.1)] or [http://www.tidsreise.com/rcu/System_w_Linux_11_2.zip here (11.2)]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update You should see something like this M2S-SOM> run update Using M2S_MAC device TFTP from server 192.168.1.10; our IP address is 192.168.1.11 Filename 'rculinux/rculinux.uImage'. Load address: 0xa0007fc0 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######################################### done Bytes transferred = 1869376 (1c8640 hex) 16384 KiB S25FL128S_64K at 0:0 is now current device Saving Environment to SPI Flash... Erasing SPI flash...Writing to SPI flash...done == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> d83f2cdbf551ad15f26fd00773c364a0f0172e43 2019 2018 2014-03-10T10:30:45Z Lbr088 56 wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here (11.1)] or [http://www.tidsreise.com/rcu/System_w_Linux_11_2.zip here (11.2)]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update You should see something like this M2S-SOM> run update Using M2S_MAC device TFTP from server 192.168.1.10; our IP address is 192.168.1.11 Filename 'rculinux/rculinux.uImage'. Load address: 0xa0007fc0 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######################################### done Bytes transferred = 1869376 (1c8640 hex) 16384 KiB S25FL128S_64K at 0:0 is now current device Saving Environment to SPI Flash... Erasing SPI flash...Writing to SPI flash...done === Kermit mode === It is also possible to update the Linux image on the board through kermit mode (file transfer over serial link). In Linux you need a kermit client, e.g. ckermit or gkermit. To setup the client, create a config file (~/.kermrc) that should look something like this: set line /dev/ttyUSB0 define sz !sz \%0 > /dev/ttyUSB0 < /dev/ttyUSB0 set speed 115200 set carrier-watch off set prefixing all set parity none set stop-bits 1 set modem none set file type bin set file name lit set flow-control none set prompt "Linux Kermit> " Connect to the board by typing in a shell '''kermit''' then after kermit has started, type '''connect'''. If you are in Linux now, you reboot the board to get to the u-boot prompt. Once at the u-boot prompt, type M2S-SOM> loadb U-boot is now waiting for an image ## Ready for binary (kermit) download to 0xA0007FC0 at 115200 bps... Go back to kermit (''ctrl-\'' and ''ctrl-c'') then send the image Linux Kermit> send /home/lars/work/TPCRCU2/trunk/Firmware/Linux_image/rculinux.uImage Once finished (this takes about 3.5 minutes) go back to the board either by closing kermit and using your favorite serial client or by doing Linux Kermit> connect Connecting to /dev/ttyUSB0, speed 115200 Escape character: Ctrl-\ (ASCII 28, FS): enabled Type the escape character followed by C to get back, or followed by ? to see other options. ---------------------------------------------------- ## Total Size = 0x001c8640 = 1869376 Bytes ## Start Addr = 0xA0007FC0 M2S-SOM> flashboot The new image should now be booted. == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> 4909fc708c5081b45151417348012f0e72243974 2023 2019 2014-07-24T13:11:45Z Lbr088 56 added some missing steps in kermit mode flashing wikitext text/x-wiki == Programming == A FlashPro project including a STAPL programming file with firmware and u-boot images can be found [http://tidsreise.com/rcu/rcu2_linux_fw.zip here]<ref>[http://tidsreise.com/rcu/rcu2_linux_fw.zip Firmware]</ref>. The firmware is compiled for the SmartFusion2 Starter Kit and the device MS2050T_ES. The Libero project will be made available on the [https://svnweb.cern.ch/cern/wsvn/TPCRCU2 Subversion] directory ASAP in case you have other devices (for now, find the project [http://tidsreise.com/rcu/System_w_Linux.tar.gz here (11.1)] or [http://www.tidsreise.com/rcu/System_w_Linux_11_2.zip here (11.2)]). Usage: # Open FlashPro software # Select ''Open Project'' and find the file ''rcu2_linux_fw.pro'' # Make sure the FlashPro programmer is inserted and that it has been selected by pressing ''View Programmers''. If necessary, hit ''Refresh/Rescan for Programmers'' # Now hit ''PROGRAM'', wait for it to finish and then power cycle the board. For more information on FlashPro, check the user guide<ref>[http://www.microsemi.com/document-portal/doc_download/130809-flashpro-for-software-v11-0-user FlashPro User Guide]</ref>. == Setup of the SmartFusion2 Target == === Boot Linux Image === The Linux image is fetched from a network and can be booted directly from the network as well as loaded into the external Flash memory on the board. This requires a TFTP server to host the Linux image, for help on setting up a server, check the [[TFTP]] page. If you would like to quickly test the boot process, a Linux image can be fetched from [https://github.com/larks/rculinux/blob/master/rculinux.uImage?raw=true Github]. For now, the U-Boot enviroment has to be set manually. * Log in to the board through serial, baud rate 115200, 1 stop bit, no parity * Reset board and hit a key to stop boot sequence * Define the IP addresses for the target board and the TFTP server, as well as the name for the boot image. setenv ipaddr 192.168.1.11 setenv serverip 192.168.1.10 setenv image rculinux.uImage saveenv To run the image over the network, reset the board and stop the autoboot sequence, then type run netboot To load the image into the Flash, type run update You should see something like this M2S-SOM> run update Using M2S_MAC device TFTP from server 192.168.1.10; our IP address is 192.168.1.11 Filename 'rculinux/rculinux.uImage'. Load address: 0xa0007fc0 Loading: ################################################################# ################################################################# ################################################################# ################################################################# ################################################################# ######################################### done Bytes transferred = 1869376 (1c8640 hex) 16384 KiB S25FL128S_64K at 0:0 is now current device Saving Environment to SPI Flash... Erasing SPI flash...Writing to SPI flash...done === Kermit mode === It is also possible to update the Linux image on the board through kermit mode (file transfer over serial link). In Linux you need a kermit client, e.g. ckermit or gkermit. To setup the client, create a config file (~/.kermrc) that should look something like this: set line /dev/ttyUSB0 define sz !sz \%0 > /dev/ttyUSB0 < /dev/ttyUSB0 set speed 115200 set carrier-watch off set prefixing all set parity none set stop-bits 1 set modem none set file type bin set file name lit set flow-control none set prompt "Linux Kermit> " Connect to the board by typing in a shell '''kermit''' then after kermit has started, type '''connect'''. If you are in Linux now, you reboot the board to get to the u-boot prompt. Once at the u-boot prompt, type M2S-SOM> loadb U-boot is now waiting for an image ## Ready for binary (kermit) download to 0xA0007FC0 at 115200 bps... Go back to kermit (''ctrl-\'' and ''ctrl-c'') then send the image Linux Kermit> send /home/lars/work/TPCRCU2/trunk/Firmware/Linux_image/rculinux.uImage Once finished (this takes about 3.5 minutes) go back to the board U-boot prompt to write the image into the flash: Linux Kermit> connect Connecting to /dev/ttyUSB0, speed 115200 Escape character: Ctrl-\ (ASCII 28, FS): enabled Type the escape character followed by C to get back, or followed by ? to see other options. ---------------------------------------------------- ## Total Size = 0x001c8640 = 1869376 Bytes ## Start Addr = 0xA0007FC0 M2S-SOM> run spiprobe; sf erase ${spiaddr} ${filesize}; sf write ${loadaddr} ${spiaddr} ${filesize}; setenv spisize 0x${filesize}; saveenv; Once finished, you can boot the newly flashed image: M2S-SOM> run flashboot == Development == [http://emcraft.com/products/255#software Download] the Linux BSP and software development environment as well as the GNU tool-chain from Emcraft[http://emcraft.com/products/255#software Emcraft SF2 Starter kit downloads]. # Extract ''linux-M2S-1.11.0.tar.bz2'' to a preferred directory # Extract GNU toolchain ''arm-2010q1-189-arm-uclinuxeabi-i686-pc-linux-gnu.tar.bz2'' to directory ./linux-cortexm-1.11.0/tools # Make sure that the information in ''ACTIVATE.sh'' is correct and that the file is executable. # Source ACTIVATE.sh: ''. ACTIVATE.sh'' You are now ready for doing development. To create a new project, you can clone the ''developer'' project: lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ make clone new=test New project created in /home/lars/work/linux-cortexm-1.11.0/projects/test lars@borg-2:~/work/linux-cortexm-1.11.0/projects/developer$ cd ../test/ Or you can clone [https://github.com/larks/rculinux this] project from Github and copy it to the ''projects'' folder in your development enviroment. === Network and development === The startup script of the SF2 should be updated such that you can mount a directory from the development host onto the target board. This way you can compile any software you are working on, and run it straight away from the mount on the board. Add something along the following lines to ''local/rc'' in your project directory: mount -o nolock,rsize=1024 192.168.1.10:/home/lars/work/linux-cortexm-1.11.0/projects /mnt The mount directory needs to be added to the ramfs table, so add to ''rculinux.initramfs'': dir /mnt 755 0 0 After this is done, the image has to be recompiled and loaded to the board. == Known Problems == * In Libero, the path for the u-boot flash image is hard-linked, so if you are trying to run any of the project in the first section of this page, Libero might tell you that it did not find the flash file. If this should occur, it is needed to redefine the path to the image. ** 11.1 -- Go to the MSS configurator tab and double-click the eNVM part, in the configuration window for the eNVM, change to the correct path. ** 11.2 -- In ''Design Flow'' tab: Configure Security and Programming Options --> Update eNVM Memory Content. == References == <references /> 6fbc04890d995fc2fb0cb0468e393663d6259b0f TFTP 0 452 1991 2013-11-28T10:30:45Z Lbr088 56 Created page with "== TFTP setup procedure == === Ubuntu or Other Debian Based Distributions === Simply install from Aptitude sudo apt-get install xinetd tftpd tftp Create rule file /etc/xinetd..." wikitext text/x-wiki == TFTP setup procedure == === Ubuntu or Other Debian Based Distributions === Simply install from Aptitude sudo apt-get install xinetd tftpd tftp Create rule file /etc/xinetd.d/tftp service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no } Create some directories to hold your files mkdir -p /export/tftpboot chmod 777 /export/tftpboot chown nobody /export/tftpboot Restart xinetd and the server should now be ready sudo service xinetd start === Windows === You can use TFTP32 from [http://tftpd32.jounin.net/ here]. An in-depth guide for setting up everything properly can be found [http://www.tricksguide.com/how-to-setup-a-tftp-server-tftpd32-windows.html here]. 77f0f6e740741c98dd8d2768cc6f47f1efa3350e 1992 1991 2013-11-28T10:33:26Z Lbr088 56 wikitext text/x-wiki == Setup == === Ubuntu or Other Debian Based Distributions === Simply install from Aptitude sudo apt-get install xinetd tftpd tftp Create rule file /etc/xinetd.d/tftp service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no } Create some directories to hold your files mkdir -p /export/tftpboot chmod 777 /export/tftpboot chown nobody /export/tftpboot Restart xinetd and the server should now be ready sudo service xinetd start === Windows === You can use TFTP32 from [http://tftpd32.jounin.net/ here]. An in-depth guide for setting up everything properly can be found [http://www.tricksguide.com/how-to-setup-a-tftp-server-tftpd32-windows.html here]. 2b23ea7c0cbdff00894778e0c3f88c7d3a46ace2 File:Reflow example.jpg 6 453 1996 2013-12-04T12:13:09Z Tni071 73 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Microelectronics group 0 25 1997 1918 2013-12-04T12:16:55Z Tni071 73 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven * [[SmartFusion2]] Oppsett og design med SF2 * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus [[Category:Mikroelektronikk]] 4d46deabaa914432a064c456414e553379f2a58f Reflow Soldering 0 454 1998 2013-12-04T12:17:37Z Tni071 73 Created page with "= Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for t..." wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [http://www.technoprint-smt.nl/downloads/manuals/rfo-ha02-manual.pdf here], while a quick search on the web for ``reflow soldering'' should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering is divided into two zones - ``preheat'' and ``reflow''. Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do It! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 1: Example of reflow soldering of MPPCs with thermal shielding and monitoring [[Category:Mikroelektronikk]] 102a5d7b1fedc69eb2967ed11a24202aa68d140e 1999 1998 2013-12-04T12:21:20Z Tni071 73 wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [http://www.technoprint-smt.nl/downloads/manuals/rfo-ha02-manual.pdf here], while a quick search on the web for "reflow soldering" should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering with this oven is divided into two zones - "preheat" and "reflow". Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do It! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 1: Example of reflow soldering of SiPMs with thermal shielding and monitoring [[Category:Mikroelektronikk]] d2f9951ad257885196d0abe6828811b7d1b604ac 2004 1999 2013-12-05T08:39:30Z Tni071 73 added some figures wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [http://www.technoprint-smt.nl/downloads/manuals/rfo-ha02-manual.pdf here], while a quick search on the web for ``reflow soldering'' should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering is divided into two zones - ``preheat'' and ``reflow''. Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. [[File:Thermocouple.jpg|816px]] Figure 1: Thermocouple used for temperature measurements [[File:Recommended_solder_profile.jpg|816px]] Figure 2: Recommended solder profile for Hamamatsu MPPC (From Hamamatsu S10362-11 series datasheet) [[File:Meas_solder_profile.jpg|816px]] Figure 3: Measured solder profile during reflow soldering == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do it! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 4: Example of reflow soldering of MPPCs with thermal shielding and monitoring [[Category:Mikroelektronikk]] [[Category:Mikroelektronikk]] fa4decaf508d4e2996ee10ad00079dbd3a5bcda3 2005 2004 2013-12-05T08:40:42Z Tni071 73 wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [http://www.technoprint-smt.nl/downloads/manuals/rfo-ha02-manual.pdf here], while a quick search on the web for ``reflow soldering'' should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering is divided into two zones - ``preheat'' and ``reflow''. Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. [[File:Thermocouple.jpg|816px]] Figure 1: Thermocouple used for temperature measurements [[File:Recommended_solder_profile.png|816px]] Figure 2: Recommended solder profile for Hamamatsu MPPC (From Hamamatsu S10362-11 series datasheet) [[File:Meas_solder_profile.png|816px]] Figure 3: Measured solder profile during reflow soldering == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do it! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 4: Example of reflow soldering of MPPCs with thermal shielding and monitoring [[Category:Mikroelektronikk]] [[Category:Mikroelektronikk]] cf5e44678c568ea5c3c56841ec2e84c421b95182 2006 2005 2013-12-05T08:41:33Z Tni071 73 wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [http://www.technoprint-smt.nl/downloads/manuals/rfo-ha02-manual.pdf here], while a quick search on the web for ``reflow soldering'' should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering is divided into two zones - ``preheat'' and ``reflow''. Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. [[File:Thermocouple.jpg|816px]] Figure 1: Thermocouple used for temperature measurements [[File:Recommended_solder_profile.png|816px]] Figure 2: Recommended solder profile for Hamamatsu MPPC (From Hamamatsu S10362-11 series datasheet) [[File:Meas_solder_profile.png|816px]] Figure 3: Measured solder profile during reflow soldering == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do it! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 4: Example of reflow soldering of MPPCs with thermal shielding and monitoring [[Category:Mikroelektronikk]] [[Category:Mikroelektronikk]] bf354bb9f68eeb94b47b677edd90f5244c921eac 2008 2006 2013-12-05T08:45:20Z Tni071 73 added user manual pdf wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [File:Rfo-ha02-manual.pdf here], while a quick search on the web for "reflow soldering" should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering is divided into two zones - "preheat" and "reflow". Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. [[File:Thermocouple.jpg|816px]] Figure 1: Thermocouple used for temperature measurements [[File:Recommended_solder_profile.png|816px]] Figure 2: Recommended solder profile for Hamamatsu MPPC (From Hamamatsu S10362-11 series datasheet) [[File:Meas_solder_profile.png|816px]] Figure 3: Measured solder profile during reflow soldering == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do it! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 4: Example of reflow soldering of MPPCs with thermal shielding and monitoring [[Category:Mikroelektronikk]] [[Category:Mikroelektronikk]] [[Category:Mikroelektronikk]] ead208c55b1fa834a455de772506f0baf4efdafa 2009 2008 2013-12-05T08:49:29Z Tni071 73 wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [[Media:Rfo-ha02-manual.pdf]], while a quick search on the web for "reflow soldering" should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering is divided into two zones - "preheat" and "reflow". Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. [[File:Thermocouple.jpg|816px]] Figure 1: Thermocouple used for temperature measurements [[File:Recommended_solder_profile.png|816px]] Figure 2: Recommended solder profile for Hamamatsu MPPC (From Hamamatsu S10362-11 series datasheet) [[File:Meas_solder_profile.png|816px]] Figure 3: Measured solder profile during reflow soldering == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do it! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 4: Example of reflow soldering of MPPCs with thermal shielding and monitoring [[Category:Mikroelektronikk]] [[Category:Mikroelektronikk]] [[Category:Mikroelektronikk]] e80055290005e0aad0f3b47a1b3986a69fb323cb File:Thermocouple.jpg 6 455 2000 2013-12-05T08:16:11Z Tni071 73 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Recommended solder profile.png 6 456 2001 2013-12-05T08:19:39Z Tni071 73 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Meas solder profile.png 6 457 2002 2013-12-05T08:35:10Z Tni071 73 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 2003 2002 2013-12-05T08:36:33Z Tni071 73 Tni071 uploaded a new version of &quot;[[File:Meas solder profile.png]]&quot; wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Rfo-ha02-manual.pdf 6 458 2007 2013-12-05T08:42:46Z Tni071 73 Technoprint HA-02 reflow oven, user manual wikitext text/x-wiki Technoprint HA-02 reflow oven, user manual 0a548ea5c71ddecaf0e0cf888539e797dad7c57c PHYS321 0 278 2013 1620 2014-02-26T10:13:38Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] 6fead84e3af4f53ab38a28a590531af245579810 Cadence Virtuoso setup 0 415 2014 1894 2014-03-06T10:47:47Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'ams_cds -64 -tech c35b4 -nologo' Save file as cadence_ic_20xx_uib.csh csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh source /prog/cadence/cadence_ic_20xx_uib.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh 305cfe4f129e04dcd0a1958ba9c42cc686b787fe 2015 2014 2014-03-06T16:43:21Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'ams_cds -tech c35b4 -nologo' Save file as cadence_ic_20xx_uib.csh csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh source /prog/cadence/cadence_ic_20xx_uib.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh 924872f78d7dd02df09f6864b92eb765236c78da Get readout box up and running 0 399 2020 1779 2014-04-08T17:56:44Z Sya081 50 wikitext text/x-wiki ==Overview== This page contains step by step informations to setup the Focal readout electronics for MAPS detectors. ==Hardware requirements== *Focal read-out box *Linux computer with Gb network capability for taking data *Windows PC for software/firmware debugging *One or more patch panel PCBs *One or more flex PCBs with mounted MIMOSA ASICs ==Software requirements and drivers== *Xilinx Lab tools v13.2, including XMD, iMPACT and ChipScope *Serial console software like PuTTY *TFTP server for Linux kernel downloading ==Configure the FPGA(s)== ===Using XMD=== XMD could run from SDK or a normal cmd command window, for the later we need to set up the path environment firstly with batch file "settings32.bat"("settings64.bat" for a 64 bit PC) from the Xilinx software installation directory like "D:\Xilinx\13.2\ISE_DS\settings32.bat", for Linux, there are corresponded shell files. Copy the file to your work directory where firmware, boot-loader and Linux kernel are, replace the XIL_SCRIPT_LOC variable with an absolute path: <pre> set XIL_SCRIPT_LOC=D:\\Xilinx\\13.2\\ISE_DS\\ </pre> Open a cmd window, switch to your work directory, run: <pre> O:\phase1\xilinx\test> settings32.bat O:\phase1\xilinx\test> xmd </pre> After entering into XMD prompt window, using "fpga -f" command to program Virtex FPGA: <pre> XMD% fpga -f system.bit </pre> If there are more than one device in the JTAG chain, use "-debugdevice devicenr" to specify the component to be programmed, here we need to configure one Virtex6 and two Spartan6 FPGAs: <pre> XMD% fpga -f spartan6u1.bit -debugdevice devicenr 1 XMD% fpga -f spartan6u2.bit -debugdevice devicenr 2 XMD% fpga -f system.bit -debugdevice devicenr 4 </pre> ===Using iMPACT=== Run iMPACT from windows Start -> Xilinx ISE Design Suite 13.2 -> ISE Design Tools -> Tools -> iMPACT, or from the cmd window opened above, <pre> XMD% impact </pre> In the iMPACT window, select File -> Initialize Chain, then you will find the devices in the JTAG chain on the "Boundary Scan" window, right click on the FPGA you need to program, Assign a configuration file, then program it following the commands. ===Using Chipscope=== Sometimes we need chipscope to look inside FPGA by probing some of the internal signals, then it's convenient to program these FPGAs in Chipscope Analyzer. There is a chipscope project file together with a Chipscope definition and connection file - "chipscope.cpj" and "chipscope.cdc". Open the project file from Chipscope pro Analyzer version 13.2 or newer, after opening JTAG cable, all device in the JTAG chain will be shown in the left navigation window, right click on a device and select configure, then operate as indicated to program FPGA and run chipscope. ==Configure TFTP server== Open TFTP Server, select File -> Properties..., in "Preferences" page, enable "Allow Read Requests", in the "Directories" page, add the directory where the Linux kernel is placed. This configration is only needed at the first time. ==Microblaze debug module and Boot loader== In the XMD prompt window, you can connect to the Microblaze debug module to download and run your bootloader: <pre> XMD% connect mb mdm -debugdevice devicenr 4 XMD% dow u-boot.elf XMD% run </pre> If there is something wrong, like no response from the console, you can restart the system without reconfiguring Virtex6 FPGA: <pre> XMD% stop XMD% run </pre> Open a serial console like Putty, select the serial port which you can find from you windows Device Manager -> Ports(COM & LPT) -> Silicon Labs CP210x USB to UART Bridge(COM4), then com4 is the one we need to use, set Baud rate 115200, No Parity, 8 data bits, 1 stop bit. In the U-Boot command prompt window of Putty, modify the Virtex MAC/IP address and the TFTP server ip address at the first time, the MAC address could be found from the top side of Virtex6 DEV board, if there is a binding between the MAC and IP address, ask you network administrator for help, if the TFTP server and the readout box are in a private network, just pick a free IP address. <pre> U-Boot-PetaLinux> setenv ethaddr 00:0a:35:02:31:1f U-Boot-PetaLinux> setenv ipaddr 129.177.39.131 U-Boot-PetaLinux> setenv serverip 129.177.39.230 U-Boot-PetaLinux> saveenv </pre> Make sure the TFTP server is running and the kernel image is in the right directory, normally you should be able to ping each other. Then download the linux kernel from TFTP server: <pre> U-Boot-PetaLinux> tftp </pre> After the image being successfully downloaded, Boot Linux kernel: <pre> U-Boot-PetaLinux> bootm </pre> If you want to burn the kernel image to the on-board flash memory, run: <pre> U-Boot-PetaLinux> run update_kernel </pre> ==Running PetaLinux== After PetaLinux boots up, log in and set up network with your Virtex MAC/IP: <pre> ~ # ifconfig eth0 hw ether 00:0a:35:02:31:1f ~ # ifconfig eth0 129.177.39.131 </pre> If your network support dhcp: <pre> ~ # udhcpc </pre> To enable SSH service: <pre> ~ # dropbear </pre> To set up jumbo frame support for data shipment <pre> ~ # ifconfig eth0 down ~ # ifconfig eth0 mtu 9000 ~ # ifconfig eth0 txqueuelen 10000 ~ # /sbin/sysctl -w net.ipv4.tcp_sack=0 ~ # ifconfig eth0 up </pre> Before running the DAQ software, if the device driver has not been compiled into Linux kernle, then manually load it and make new device nodes in the /dev directory: <pre> ~ # /home/uib/load.sh </pre> All of the above configurations are now being put into an initiative script file, you can run it after logging in the system: <pre> ~ # /home/test/init.sh </pre> The above steps can also be done from a telnet terminal, after being initiated, the ssh server is running, you can connect the box from another pc with ssh connection. ===Startup scripts=== For the automatic running of the user initialization scripts, you can't add them directly to the romfs script files like /etc/rc.sysinit, because there files are generated every time during Petalinux compilation and all custom modification will be overwritten. The source files for these initialization scrips are located in "~petalinux-dist/user/sys_init/data/etc/rc", normally you should put your custom startup commands in "start" file, but according to the Makefile, this file doesn't work properly at the moment, so we add our scripts to the end of "sysinit" file: <pre> echo "Running user init scripts." /home/test/init.sh </pre> After running "make romfs", you will find that these scripts are added into the romfs file "/etc/rc.sysinit". ==Running DAQ== Start the server side DAQ software in the Linux DAQ server firstly, it will be waiting there for a connection: <pre> $ ./server </pre> Run the client side DAQ software: <pre> ~ # focal 0-3 </pre> The argument specifies the operation mode of the readout box: *0: Virtex test patterns as the input of DMA engine with FIFOs being bypassed, for every 256-bit word, there is a 32-bit counter and some other fixed long word patterns, as below: <pre> Data in [0x67000000..0x6700001f): 01 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 Data in [0x67000020..0x6700003f): 02 00 00 00 44 33 22 11 BB CC DD EE CC BB AA 99 00 FF EE DD 11 11 11 11 22 22 22 22 33 33 33 33 </pre> *1: Virtex test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter and two long word patterns) for each FIFO. Every 256-bit word is divided into two parts from the two FIFOs respectively, as below: <pre> Data in [0x67000000..0x6700001f): 41 91 01 00 44 33 22 11 BB CC DD EE 42 91 01 00 | 41 91 01 00 CC BB AA 99 00 FF EE DD 42 91 01 00 Data in [0x67000020..0x6700003f): 44 33 22 11 BB CC DD EE 43 91 01 00 44 33 22 11 | CC BB AA 99 00 FF EE DD 43 91 01 00 CC BB AA 99 Data in [0x67000040..0x6700005f): BB CC DD EE 44 91 01 00 44 33 22 11 BB CC DD EE | 00 FF EE DD 44 91 01 00 CC BB AA 99 00 FF EE DD </pre> *2: Spartan test patterns as the FIFO input, they are the test signals grouped by 96 bits(one 32-bit counter plus ASCII codes of "SPARTAN1" or "SPARTAN2") for each FIFO. They are very similar as in mode 1 except that these signals are from Spartan FPGAs, as below: <pre> Data in [0x67000000..0x6700001f): 42 91 01 00 31 4E 41 54 52 41 50 53 43 91 01 00 | 42 91 01 00 32 4E 41 54 52 41 50 53 43 91 01 00 Data in [0x67000020..0x6700003f): 31 4E 41 54 52 41 50 53 44 91 01 00 31 4E 41 54 | 32 4E 41 54 52 41 50 53 44 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 52 41 50 53 45 91 01 00 31 4E 41 54 52 41 50 53 | 52 41 50 53 45 91 01 00 32 4E 41 54 52 41 50 53 </pre> *3: The real data mode, at the input side of the two FIFOs, there are 96 bits from the 96 Mimosa data channels, at the output side of the FIFOs, the data is readout in 128 bits and the two FIFO outputs are connected together to form a 256-bit AXI4 word. With only the first 4 chips(16 channels) of the first Spartan FPGA being enabled and the other Spartan FPGA working in mode 2, the readout data format is as below: <pre> Data in [0x67000000..0x6700001f): 3F 3F 00 00 00 00 00 00 00 00 00 00 3F FF 00 00 | 41 91 01 00 32 4E 41 54 52 41 50 53 42 91 01 00 Data in [0x67000020..0x6700003f): 00 00 00 00 00 00 00 00 3F FF 00 00 00 00 00 00 | 32 4E 41 54 52 41 50 53 43 91 01 00 32 4E 41 54 Data in [0x67000040..0x6700005f): 00 00 00 00 7F 7F 00 00 00 00 00 00 00 00 00 00 | 52 41 50 53 44 91 01 00 32 4E 41 54 52 41 50 53 </pre> ==DAQ Configurations== ===Slow control setup=== The slow control setup is necessay for proper DAQ operations and it is done in the initialization part of the program before starting DAQ. All the parameters are read in from a configration file - "/home/test/parameters.txt". If this file can't be found/opened or errors occur during reading time, the default values which are hard coded will be selected. <pre> 0x00000F // U1_CHIP_ENABLE 1 bit for 1 chip [23 downto 0]. 24 bits, HEX 0x000 // U1_READOUT_CLK_SRC 2 bits for 1 layer[35 downto 24]. 12 bits, HEX 0x0 // U1_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal, [38 downto 36], 3 bits 0x1 // U1_PATTERN_LINE_EN enable pattern line for MAPS. 1 bit, [39] 0x0 // U1_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). [40] 0x1FF // U1_BKUP 9 bits for future use. [49 downto 41], HEX 0x000000 // U2_CHIP_ENABLE 2 bits for 1 chip [23 downto 0], HEX, LSB = chip 0 0x000 // U2_READOUT_CLK_SRC 1 bit for 1 layer, HEX 0x0 // U2_FRAME_SYNC_SRC use the MK_CLKD from the 1st layer as the source of frame_sync signal 0x1 // U2_PATTERN_LINE_EN enable pattern line for MAPS. 0x0 // U2_PATTERN_MODE pattern mode selection, 0: id/cnt, 1: toggle values(55/aa). 0x1FF // U2_BKUP 9 bits for future use, HEX </pre> Notes: *Chip_enable: 1=enable;0=disable. LSB = chip 1; *Readout_clk_src: 0b00=chip1(J10); 0b10=chip2(J11); 0b01=chip3(J13); 0b11=chip4(J12). LSB = Layer 1 *Frame_sync_src: 0=layer1...5=layer6. Make sure there is a working MK_CLKD signal for the selected layer. Slow control parameters will be saved inside Spartan FPGAs, so normally only one time of slow control operation is needed. ===Mimosa JTAG configuration=== Before DAQ starts to read out real detector data, all Mimosa asics need to be configured. This is done by a Linux program - "playxsvf", it reads in JTAG configurations from an xsvf format file and generates JTAG pin signals which are connected to a Spartan FPGA, these signals are then multiplexed to different patch pannel pcbs according to the address specified. To run this program: <pre> ~ # playxsvf XSVF Player v5.01, Xilinx, Inc. USAGE: playxsvf [-l layer] filename.xsvf where: -l layer = layer, no = 0-15 (default=0) filename.xsvf = the XSVF file to execute. ~ # playxsvf -l 1 /home/xsvf/pattern_4chips.xsvf </pre> Layer number: *1~6 for detector layer 1 to 6, 7 for all, these 6 layers are connected to Spartan U1 via the upper fanout board. *9~14 for detector layer 7 to 12, 15 for all, these 6 layers are connected to Spartan U2 via the lower fanout board. Four Mimosa chips in one detector layer share the same JTAG interface, they are configured one by one with others being bypassed, for different number of chips in the JTAG chain, there are different xsvf files, the position of the working chips in the JTAG also matters if not all chips are working. The enable/disable of the chips for JTAG configuration is determined by the slow control parameter "CHIP_ENABLE", if one chip is disabled, then it will also be bypassed from the JTAG chain. So it is important to finish the slow control before running JTAG configuration. Normally for the first time after the Spartan FPGAs are programmed or there are any modifications for the slow control parameters, we need to run "focal" program with a pattern mode firstly, then run JTAG configurtion before we can read out real detector data finally. All the JTAG configurations are saved inside Mimosa chips, so only one time of JTAG download is needed. ===Threshold voltage setup=== Normally the threshold voltages are set chip by chip with the values in the xsvf files. To change the values we need to regenerate the corresponded xsvf files with SVF to XSVF converter: "svf2xsvf502.exe". To automatically scan these voltages, it is possible to hack into the xsvf files and change the corresponded binary values and run it with xsvfplayer looply, but it is difficult when there are some chips not working inside a JTAG chain because there are different bit shifts inside the xsvf file for different chip position. This part is still under investigation. ==Running Chipscope== After programming FPGAs and configuring Mimosa chips, if something doesn't work properly, chipscope is the effective way to look into FPGAs to debug firmwares. For the current system, the Virtex and the two Spartan FPGAs share the same JTAG download cable, so they can work together in the same Chispcope project. After opening the Chipscope project file and initializing the JTAG cable, we can find the Spartan U1 and virtex chipscope interfaces, by setting up proper trigger conditions we could get the waveform of all the signals we want. *For Spartan U1, the chipscope signals include the frame_sync signal, the data ouput of the first chip(4 channels), the pattern verification results of these 4 channels and the total "not and" signal of all pattern match signals from the chips being enabled. If we trigger with "fram_sync_int", which is the signal for the start of the last line in a frame, we could see the pattern signal being programmed via JTAG, followed by the first several lines of data output from the first Mimosa chip, pattern_match value "1" means the pattern for current channel is matched. All match signals are "not anded" to an LED - "LED2_OBUF", if it is "0", all working chips have a matched pattern. <center>[[Image:chipscope_spartan.JPG]]</center> *For Virtex, there are signals related with the Focal unit and DMA engine, like the current counts of FIFOs, the FIFO status, external and internal(for test) frame_sync/spill_valid signals and so on. Normally it can be triggered with frame_sync, if you want to look know the status of FIFO, you can trigger with the FIFO_full/FIFO_empty or FIFO_count signals. ==Auto boot the system== After the firmware/bootloader/Linux developments are finished, we can burn these files into the on-board flash memories, to make the system boot up automatically after power on. There are three different kinds of flash memories available, a 2GB CF card, a 16MB platform flash and a 32MB BPI linear flash. We can put the FPGA configuration file in CF card or in the platform flash, and the BPI flash is the one for bootloader and Linux image. ===Program the CF card=== The CF card supports up to 8 configuration files, which is selected by the S1 switch on the Virtex board. We can generate a new .ace file with iMPACT and overwrite one of the 8 files in CF card, then enable the SysACE CF load and give the correct SysACE address: <pre> S1: 4 ON (SysACE Mode = 1) // Enable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, 0 means the first one(.ace file locates in /XILINX/cfg0/ directory in CF card) 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) 5 ON (M2 = 1) // JTAG mode 4 OFF (M1 = 0) 3 ON (M0 = 1) 2 ON (CS_SEL = 1) // Select Linear flash access 1 OFF (EXT_CCLK = 0) </pre> For the switch setups, please refer to [http://www.xilinx.com/support/documentation/boards_and_kits/ug534.pdf ML605 Hardware User Guide]. ===Program the Platform flash=== The platform flash supports in system programing, we can program it in iMPACT, with the .mcs file also generated in iMPACT. Please refer to [http://www.xilinx.com/support/documentation/user_guides/ug438.pdf Platform Flash XL Configuration and Storage Device]. Switches should be set up as below: <pre> S1: 4 OFF (SysACE Mode = 0) // Disable configuration load from CF card 3 OFF (SysACE Addr 2 = 0) // Three address bits, don't care here 2 OFF (SysACE Addr 1 = 0) 1 OFF (SysACE Addr 0 = 0) S2: 6 OFF (FLASH_A23 = 0) // Don't care in this mode 5 ON (M2 = 1) // Slave SelectMAP mode 4 ON (M1 = 1) 3 OFF (M0 = 0) 2 OFF (CS_SEL = 0) // Select Platform flash access 1 ON (EXT_CCLK = 1) </pre> ===Burn bootloader and Linux image=== This should be done in u-boot prompt window, for bootloader, we need binary file "u-boot-s.bin", which can be find in the petalinux-dist/images/ directory, you need to copy this file together with the linux kernel image "image.ub" to the TFTP server root directory. <pre> U-Boot-PetaLinux> run update_uboot U-Boot-PetaLinux> run update_kernel </pre> ==LED definitions== * D1: on: Test pattern out mode (mode 2) of Spartan1, off: normal mode; * D2: on: All enabled channels have correct patterns, off: at least one channel(1/4 of a chip) of pattern mismatch; * D3: flash: 1Hz from Spartan1 to Spartan2, maybe soldered up side down for some boxes; * D4: As D1, for Spartan2; * D5: As D2, for Spartan2; ==Useful links== # [http://www.xilinx.com/support/documentation/boards_and_kits/ug533.pdf Getting Started with the Xilinx Virtex-6 FPGA ML605 Evaluation Kit] # [http://www.xilinx.com/support/documentation/boards_and_kits/xtp055.pdf ML605 Restoring Flash Contents] # [http://www.xilinx.com/support/documentation/user_guides/ug360.pdf Virtex-6 FPGA Configuration User Guide] [[Category:Focal]] cfa85f86fea07bcf553277f6c6e4c7ec55763216 Particle Physics group 0 137 2021 1240 2014-04-15T14:11:20Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[From Higgs to Dark Matter 2014, in statu. nascendi]] === Job openings in our group=== we filled two postdoc positions in 2013, there will be a PhD position in 2014. * [[ ]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 88b59f21fc0439b023c0122f45e9ae37a8b4b084 ATLASThesesNotes 0 234 2022 1783 2014-04-15T14:52:48Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Therese Sjursen -to be defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] e6980443aa0e149218561b1ac6b551b373448bd1 2024 2022 2014-07-29T15:02:15Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] a69a882187fadd6a7d8371a705a70127a77abd25 2025 2024 2014-08-20T11:51:09Z Nfyst 67 added some thesis titles (Bjarne) wikitext text/x-wiki == Theses, Notes, Publications, ... == === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] 532d975a955cd7adec58565159aea66d13730d69 PHYS222 0 202 2026 1696 2014-09-08T08:07:50Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [http://www.k-state.edu/ksuedl/publications/Technote%201%20-%20Equivalent%20Noise%20Bandwidth.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf Elementary Physics of P-N Junctions]] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * Symbolsk løsning av [[nodeligninger for en source-følger]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 583ca69bb54c457fd1823f9c3458c35778532f11 Symbolsk løsning av nodeligninger med Matlab 0 217 2027 734 2014-09-09T08:13:57Z Nfyku 4 wikitext text/x-wiki <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Kjetil Ullaland ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0'; ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0'; ligning1=subs(ligning1,'1/(j*w*C)','Zc'); ligning2=subs(ligning2,'1/(j*w*C)','Zc'); pretty(ligning1); pretty(ligning2); disp('Solve for Vgs'); vgs_solved=solve(ligning2,'Vgs'); pretty(simplify(vgs_solved)); disp('Solve for Vout(vin)'); ligning3=subs(ligning1,vgs_solved,'Vgs'); Vout_solved=solve(ligning3,'Vout'); pretty(simplify(Vout_solved)) </pre> 7d8d9cc1f554e1f3a98dbeef7f1ac412d9272475 2028 2027 2014-09-09T08:17:03Z Nfyku 4 wikitext text/x-wiki <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0'; ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0'; ligning1=subs(ligning1,'1/(j*w*C)','Zc'); ligning2=subs(ligning2,'1/(j*w*C)','Zc'); pretty(ligning1); pretty(ligning2); disp('Solve for Vgs'); vgs_solved=solve(ligning2,'Vgs'); pretty(simplify(vgs_solved)); disp('Solve for Vout(vin)'); ligning3=subs(ligning1,vgs_solved,'Vgs'); Vout_solved=solve(ligning3,'Vout'); pretty(simplify(Vout_solved)) </pre> 24437330e3e8c21d349fa7da7ba03cfc95b61b9e Particle Physics group 0 137 2029 2021 2014-09-11T15:11:52Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. For more info see [http://www.uib.no/fg/subatom/prosjekter/atlas Atlas Bergen UiB page]. For even more info see previous group page at [http://ift.iportal.uib.no/index.php?link_id=144809&sublink_id=145020&subsublink_id=&periode= Particle Group Page] . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send Thomas Burgess an e-mail and he will activate your account. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[From Higgs to Dark Matter 2014, in statu. nascendi, [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, there will be a PhD position in 2014, and PhD theory being announced now to start in 2015 all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] abc533836ea78b74ea2ba52e904d78208bae052a Busy Box and related 0 3 2030 1800 2014-10-10T07:51:00Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Dominik.Fehlker Dominik Fehlker] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] c0ec053aed9d04ee496df2b72fbaad21de3ca0d5 2031 2030 2014-10-10T08:00:22Z Nfyku 4 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://svn.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 2793ffd3f930013d3735feefb2fd0508abec00d3 2050 2031 2014-10-31T17:28:54Z Ave082 33 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 7708f1fcc2dc1eda4aed176d882e92cbcf57394f Cadence Virtuoso overview 0 38 2032 1906 2014-10-10T17:29:15Z Ave082 33 Replaced content with "=Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm prosess ]] [[ AMS 3..." wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm prosess ]] [[ AMS 350nm prosess ]] [[Category:Mikroelektronikk]] b6012afb28dc27a6449716e0870b0a29b99e5bdc 2034 2032 2014-10-10T17:31:04Z Ave082 33 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ AMS 350nm process ]] [[Category:Mikroelektronikk]] aa646ecdb98a01992d6d1a77456cfbe9550f01b9 2048 2034 2014-10-22T12:20:01Z Oly002 83 wikitext text/x-wiki =Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ AMS 350nm process ]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[Category:Mikroelektronikk]] 9f92402ce0e9526d229ebbef612fcd7b9d2c02ad AMS 350nm process 0 460 2035 2014-10-10T17:31:18Z Ave082 33 Created page with "=Cadence design with AMS 350nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process..." wikitext text/x-wiki =Cadence design with AMS 350nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 6. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 7. To check and save the schematic, press 'X' or click the "Check and save" icon. Make sure you get no errors or warnings. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 8. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "vdc" node connected to the inverter input, the drain node of the nmos transistor and the net connected between the drain nodes of the nmos and pmos transistor. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol- [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. 7738da052ba5627e016390c83cae665a45c1ac3d 2037 2035 2014-10-10T20:48:52Z Ave082 33 wikitext text/x-wiki =Cadence design with AMS 350nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs, choose direction and click on the schematic to place it. Create one input and one output. 7. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 8. To check and save the schematic, press 'x' or click the "Check and save" icon. 9. If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 10. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 10. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol- [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. b1a65f6d5116d231e0a8c4f0a295071a5e864691 TSMC 130nm process 0 461 2036 2014-10-10T20:47:52Z Ave082 33 Created page with "=Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design proces..." wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh virtuoso & Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 7. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 8. To check and save the schematic, press 'x' or click the "Check and save" icon. 9. If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 10. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 11. Choose "Create > Test..." select the cell to simulate. 12. Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. 13. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 14. Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. ce27d5632407d321b42172b3cd8003bcd31aef2e 2038 2036 2014-10-15T20:25:29Z Ave082 33 wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh tsmc_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 7. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 8. To check and save the schematic, press 'x' or click the "Check and save" icon. 9. If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 10. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 11. Choose "Create > Test..." select the cell to simulate. 12. Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. 13. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 14. Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. fba004ce655128eeabc193235658cd2078be5249 2041 2038 2014-10-16T10:31:37Z Ave082 33 wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh tsmc_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 7. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 8. To check and save the schematic, press 'x' or click the "Check and save" icon. 9. If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 10. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 11. Choose "Create > Test..." select the cell to simulate. 12. Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. 13. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 14. Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. 2d6434f0cf6ef90acd09441abc05e9752f2ec356 Cadence Virtuoso setup 0 415 2039 2015 2014-10-16T10:25:35Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="tcsh"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh 63e6da30d125874fbf23824c18f893ce625c2176 2040 2039 2014-10-16T10:28:39Z Ave082 33 wikitext text/x-wiki == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh dde35345583bea2ccd222b0f842bade336dc4f82 ATLASThesesNotes 0 234 2042 2025 2014-10-16T16:18:32Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Submitted and yet not defended Phd Thesis=== *Alex Kastanas October 2014, defence scheduled for December, Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] ec7ff4daca76c2fbe27476d1bb38277d42a37183 2078 2042 2014-12-28T17:49:59Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications, ... == === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] c4512ac8e425e8a135f5172018d671083f6d1d0a File:ThesisMain AlexKastanas.pdf 6 462 2043 2014-10-16T16:19:16Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Csv import libreoffice.png 6 463 2044 2014-10-22T12:03:04Z Oly002 83 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Run debug simulation.png 6 464 2045 2014-10-22T12:03:39Z Oly002 83 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Run transistors script.png 6 465 2046 2014-10-22T12:03:54Z Oly002 83 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Transistor operating point printer 0 466 2047 2014-10-22T12:17:18Z Oly002 83 Created page with "This script can be used to print the operating point parameters of all transistors in your design. Navigate to the folder you want to save the script in (this tutorial uses..." wikitext text/x-wiki This script can be used to print the operating point parameters of all transistors in your design. Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This scipt uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a Debug Test with DC analysis: [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> The results file can also be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] [[Category:Mikroelektronikk]] 193e6ea6d4bfcdb18f175396d967eaf09f3add04 Experimental Nuclear Physics group 0 2 2049 1442 2014-10-31T17:11:51Z Ave082 33 wikitext text/x-wiki == Welcome == <center>[[Image:Bergen from Ulriken.gif]]</center> Welcome to the Wiki of the Experimental Nuclear Physics group at the Department of Physics and Technology at the University of Bergen (UiB). Its intended to represents a knowledge base for our current research and contributions to various projects. ---- Main aspect will be the [http://aliceinfo.cern.ch/index.html ALICE] experiment at [http://www.cern.ch CERN], but also [[other experiments]] will be found here. For ALICE, we are mainly involved in: * [[Detector Control System (DCS) for ALICE Front-end electronics]] * [[Electronics for the Time Projection Chamber (TPC)]] and Photon Spectrometer (PHOS) * [[SAMPA]] * [[FOCAL - Forward Calorimeter]] * [[PHOS PVSS panels]] * [[PHOS TOR]] * [[Busy Box and related]] * [[Xilinx Tools]] * [[HLT]] * [[GRID]] * [[Analysis]] * [[Coming to CERN]] <center>[[Image:alice.gif]]</center> 0f2b4768f3eec299aa9882d62beb9658f0556271 SAMPA 0 467 2051 2014-10-31T19:01:10Z Ave082 33 Created page with "== SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN] ==== Documentation ==== ====Registers====..." wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN] ==== Documentation ==== ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== Ther version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] b3e62069581e9bd54e75d9f662669ccc3b33b527 2052 2051 2014-10-31T19:11:53Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== Ther version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] c2b66e2d6314d808534bbf15e11708d3dba622ea 2053 2052 2014-10-31T19:12:06Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== Ther version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] 8d76935ec2d528135fcba984a71d09a0a0195089 2054 2053 2014-11-03T13:16:21Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] b779a92495166fb491557c8a5c4a8cda5568dd3f 2057 2054 2014-11-03T15:07:02Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] a34929c9a7ed15683135021fe91c939cb209bfa4 2058 2057 2014-11-03T15:07:20Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] dafd00b1093878ac89573827077ac3ea62add6ff 2061 2058 2014-11-06T18:04:20Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== Fixed mac: warm reboot, pree key to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 48daca0032a502df7965ab9c93237feda2bc6974 2062 2061 2014-11-17T15:07:57Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac for: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot c1b72ab245f0d7bf84ae9377306524d2cb60cb6a 2063 2062 2014-11-18T13:41:58Z Ave082 33 wikitext text/x-wiki == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 49f36c6dbc913ff9754ce50382bf91695832e061 2064 2063 2014-11-19T19:28:57Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot e38b61742600979e9b881e2d3965b71a45ab6f54 2065 2064 2014-11-19T21:38:23Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 7b6b324826520408829ee768c212d43b13e283d7 2066 2065 2014-11-19T21:39:10Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 1e3f37c50f05825313935a848fc2ce887974ed6b 2067 2066 2014-11-19T21:39:39Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 540b2292c69bf364edca5d5af47a87a7ebbd871b 2068 2067 2014-11-19T21:44:49Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] === Carrier board documentation === == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 0baefcda6e21218a19a6f198d03f7248fe97c536 2069 2068 2014-11-19T21:48:49Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] === Carrier boards === Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot dcb159c2cdac21be1e2e3baeab784827857c7347 2070 2069 2014-11-19T21:49:12Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 481b866f974807e9ca53f2acefe68afdcc7ea3d7 2072 2070 2014-11-19T21:59:52Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 26cc01a00eedb822f69c7fa7d68389e42758cfce 2073 2072 2014-11-20T20:15:59Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot 09b81d99aae8a3d1faa25c2d29b45d0a53e388f9 2074 2073 2014-12-10T14:16:49Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 017e655fa99dda1208906203adc9b806266a1c47 2075 2074 2014-12-18T10:48:32Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to [https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA]</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 2b2d2c21fc1266b7507ae611f32685c3a551905d 2076 2075 2014-12-18T10:49:07Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to [https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA CERN SAMPA wiki]</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 40484b898b459f74c382dce0b89b65c1a85a57d4 2077 2076 2014-12-18T10:50:35Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] cf3aaf507da491c55422093926ba29b6df9926bc 2079 2077 2015-01-10T13:44:48Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from ==== All latest files ==== ;::*[[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] ==== Revision 59 ==== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 95fa3d7cae8cca36c024095f75e4c1b57ebac8c3 SAMPA/SAMPA Registers 0 468 2055 2014-11-03T14:15:36Z Ave082 33 Created page with "= SAMPA MPW1 Registers = == Channel specific registers == These are registers specific to each channel. By using a broadcast command, all channels can be written at the same..." wikitext text/x-wiki = SAMPA MPW1 Registers = == Channel specific registers == These are registers specific to each channel. By using a broadcast command, all channels can be written at the same time.<br /> {| class="wikitable" ! Register name ! ! Address ! Type ! Default value ! ! Description |- | K1 | [12:0] | 0x00 | RW | 0x00 | [12:0] | First pole of the TCFU |- | K2 | [12:0] | 0x01 | RW | 0x00 | [12:0] | Second pole of the TCFU |- | K3 | [12:0] | 0x02 | RW | 0x00 | [12:0] | Third pole of the TCFU |- | K4 | [12:0] | 0x03 | RW | 0x00 | [12:0] | Fourth pole of the TCFU |- | L1 | [12:0] | 0x04 | RW | 0x00 | [12:0] | First zero of the TCFU |- | L2 | [12:0] | 0x05 | RW | 0x00 | [12:0] | Second zero of the TCFU |- | L3 | [12:0] | 0x06 | RW | 0x00 | [12:0] | Third zero of the TCFU |- | L4 | [12:0] | 0x07 | RW | 0x00 | [12:0] | Fourth zero of the TCFU |- | ZSTHR | [19:0] | 0x08 | RW | 0x0A | [9:0] | Zero suppression threshold |- | | | | RW | 0x00 | [19:10] | Zero suppression offset |- | ZSCFG | [6:0] | 0x09 | RW | 0x02 | [1:0] | Glitch filter, minimum accepted pulse |- | | | | RW | 0x07 | [4:2] | Post-samples |- | | | | RW | 0x03 | [6:5] | Pre-samples |- | VFPED | [19:0] | 0x0A | RW | 0x00 | [9:0] | BC1 Fixed pedestal |- | | | | R | 0x00 | [19:10] | BC1 variable pedestal |- | CTE | [9:0] | 0x0B | RW | 0x00 | [9:0] | Channel specific noise |- | PMDTA | [9:0] | 0x0C | RW | 0x00 | [9:0] | Data to be stored in the pedestal memory |} == Global registers == These are global registers and does not accept broadcast commands.<br /> {| class="wikitable" ! Register name ! ! Address ! Type ! Default value ! ! Description |- | PMADD | [9:0] | 0x0D | RW | 0x00 | [9:0] | Pedestal memory address |- | BC2THR | [19:0] | 0x0E | RW | 0x03 | [8:0] | Lower threshold of moving average filter |- | | | | RW | 0x03 | [17:9] | Higher threshold of moving average filter |- | | | | RW | 0x01 | [19:18] | Number of taps in moving average filter |- | TRCFG | [19:0] | 0x0F | RW | 0x00 | [7:0] | Number of pre-samples (Pretrigger delay), max 191 |- | | | | RW | 0x3FD | [17:8] | Number of samples per event, max 1021 |- | DPCFG | [11:0] | 0x10 | RW | 0x00 | [3:0] | BC1 mode, see ALTRO manual |- | | | | RW | 0x00 | [4] | BC1 polarity |- | | | | RW | 0x07 | [6:5] | BC2 pre-samples |- | | | | RW | 0x07 | [10:7] | BC2 post-samples |- | | | | RW | 0x01 | [1] | BC2 moving average filter enable |- | VACFG | [7:0] | 0x11 | RW | 0x00 | [1:0] | Number of neighbors, not in use |- | | | | RW | 0x01 | [3:2] | Number of serial out, see table 1.5 |- | | | | RW | 0x00 | [4] | Pedestal mode enabled (zero suppression threshold 0) |- | | | | RW | 0x01 | [5] | Power save mode enabled |- | | | | RW | 0x00 | [6] | TCFU enabled |- | | | | RW | 0x01 | [7] | Continuous mode enabled |- | BC1THR | [13:0] | 0x12 | RW | 0x03 | [4:0] | Lower threshold of variable pedestal filter |- | | | | RW | 0x03 | [9:5] | Higher threshold of variable pedestal filter |- | | | | RW | 0x01 | [13:10] | Number of taps in variable pedestal filter |- | TRCNT | [15:0] | 0x13 | R | 0x00 | [15:0] | Trigger count |- | HWADD | [4:0] | 0x14 | R | 0x00 | [4:0] | Chip address (hardware address) |- | ERRORS | [5:0] | 0x15 | R | 0x00 | [0] | Parity error in received instruction |- | | | | R | 0x00 | [1] | Instruction error |- | | | | R | 0x00 | [2] | Trigger overlap |- | | | | R | 0x00 | [3] | SEU in MMU SM (not implemented) |- | | | | R | 0x00 | [4] | SEU in interface SM (not implemented) |- | BXCNT | [19:0] | 0x16 | R | 0x00 | [19:0] | Bunch crossing counter |} == Command registers == These are command registers and can only be written to. The value doesn’t matter as only the access is detected.<br /> {| class="wikitable" ! Register name ! Address ! Type ! Description |- | SWTRG | 0x1B | W | Software trigger (not implemented) |- | TRCLR | 0x1C | W | Clear trigger counter |- | ERCLR | 0x1D | W | Clear errors |- | BXCLR | 0x1E | W | Clear bunch crossing counter |- | SRST | 0x1F | W | Software reset |} 648791fd3b34b72e9b40774aad189d9161760120 SAMPA/SAMPA DAQ Registers 0 469 2056 2014-11-03T14:45:49Z Ave082 33 Created page with "= SAMPA DAQ Registers = == Command and Control module registers == The registers for the command and control module, located at address 0x0000 from the UART or 0xFF200000 fro..." wikitext text/x-wiki = SAMPA DAQ Registers = == Command and Control module registers == The registers for the command and control module, located at address 0x0000 from the UART or 0xFF200000 from the HPS, is listed in table 4.1 {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | SC_ADD | [15:0] | 0x00 | RW | 0x00 | [4:0] | Slow control: Register address |- | | | | RW | 0x00 | [9:5] | Slow control: Channel address |- | | | | RW | 0x00 | [13:10] | Slow control: Chip address |- | | | | RW | 0x00 | [14] | Slow control: Broadcast |- | | | | RW | 0x00 | [15] | Slow control: Write/ not read |- | SC_DAT | [19:0] | 0x01 | RW | 0x00 | [19:0] | Slow control: Data to write |- | SC_MASK | [19:0] | 0x02 | RW | 0x00 | [19:0] | Slow control: Mask for writing * |- | CMD | [31:0] | 0x03 | RW | 0x00 | [15:0] | Commands, see table 4.2 |- | | | | RW | 0x00 | [31:15] | Loop count for commands |- | SC_RLT | [19:0] | 0x04 | R | 0x00 | [12:0] | Slow control: Response from SAMPA |- | SC_ERR | [1:0] | 0x05 | R | 0x00 | [0] | Error: Timeout waiting for response from slow control |- | | | | R | 0x00 | [1] | Error: Response from SAMPA not as expected |- | LNK_STS | [31:0] | 0x06 | R | 0x00 | [31:0] | Ethernet link status * |- | EVT_CFG | [31:0] | 0x07 | RW | 0x01 | [1:0] | Test signal output, see table 4.3 |- | | | | RW | 0x00 | [2] | Enable SLVS testing |- | | | | RW | 0x00 | [3] | Enable continuous readout of shiftregister |- | | | | RW | 0x00 | [31:3] | Reserved * |- | EVT_CNT | [31:0] | 0x08 | R | 0x00 | [31:0] | Reserved * |- | EV_BL | [31:0] | 0x09 | R | 0x00 | [31:0] | Reserved * |- | SMP_STS1 | [30:0] | 0x0A | R | | | Status of signals to and from SAMPA (updated every clock cycle) |- | | | | R | | [12:0] | Test data output from SAMPA |- | | | | R | | [16:13] | Serial out [3:0] |- | | | | R | | [18:17] | Number of serial out |- | | | | R | | [19] | Enable ZSU |- | | | | R | | [20] | Enable BC2 |- | | | | R | | [21] | Enable TCFU (deprecated) |- | | | | R | | [22] | Enable BC1 |- | | | | R | | [25:23] | Select test output |- | | | | R | | [26] | Select ADC0 or test input |- | | | | R | | [30:27] | Chip address |- | SMP_STS2 | [5:0] | 0x0B | R | | | Status of signals to and from SAMPA cont. |- | | | | R | | [0] | Slow control to SAMPA |- | | | | R | | [1] | Slow control from SAMPA |- | | | | R | | [2] | Reset_n |- | | | | R | | [3] | Event trigger |- | | | | R | | [4] | Heartbeat trigger |- | | | | R | | [5] | Sync signal |- | SMP_CFG | [13:0] | 0x0C | RW | | | SAMPA static signals, see SAMPA spec document for further details |- | | | | RW | 0x02 | [1:0] | Number of serial out |- | | | | RW | 0x00 | [2] | Enable ZSU |- | | | | RW | 0x00 | [3] | Enable BC2 |- | | | | RW | 0x01 | [4] | Enable TCFU |- | | | | RW | 0x01 | [5] | Enable BC1 |- | | | | RW | 0x03 | [8:6] | Select test output |- | | | | RW | 0x01 | [9] | Select ADC0 or test input |- | | | | RW | 0x01 | [13:10] | Chip address |- | SLVS_ERR | [15:0] | 0x0D | R | 0x00 | | SLVS errors detected |- | RAD_ERR | [31:0] | 0x0E | R | | | Errors detected in shiftregister test |- | | | | R | 0x00 | [15:0] | Bit 0 errors |- | | | | R | 0x00 | [31:16] | Bit 1 errors |} Commands for command and control unit. {| class="wikitable" ! Value ! Description |- | 0x1 | Reset FPGA and SAMPA |- | 0x2 | Reset SAMPA |- | 0x3 | Send event trigger |- | 0x4 | Send heartbeat trigger |- | 0x5 | Send sync signal |- | 0x6 | Run readout of shiftregister once (RAD) |- | 0x7 | Reset errors in shiftregister count (RAD_ERR) |- | 0x8 | Execute slow control command |- | 0x9 | Reset HPS |} Test signals available for generation. {| class="wikitable" ! Value ! Description |- | 0x0 | Constant zeros |- | 0x1 | Sine wave, full wave, 512 samples pulse width |- | 0x2 | Saw wave, full wave, 512 samples pulse width |- | 0x3 | Triangle wave, full wave, 1024 samples pulse width |} == Data manager registers == The registers for the data manager module, located at address 0x0040 from the UART or 0xFF201000 from the HPS, is listed in table 4.4. {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | CNTRL | [7:0] | 0x00 | RW | 0x00 | | Control register |- | | | | RW | 0x00 | [0] | Enable acquisition |- | | | | RW | 0x00 | [7:1] | Reserved |- | PKT0 | [31:0] | 0x01 | R | 0x00 | [31:0] | Packets written to memory from channel 0 |- | PKT1 | [31:0] | 0x02 | R | 0x00 | [31:0] | Packets written to memory from channel 1 |- | PKT2 | [31:0] | 0x03 | R | 0x00 | [31:0] | Packets written to memory from channel 2 |- | PKT3 | [31:0] | 0x04 | R | 0x00 | [31:0] | Packets written to memory from test-input/ADC |- | FIFO0 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 0 |- | FIFO1 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 1 |- | FIFO2 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 2 |- | FIFO3 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 3 |} 6c387788f1f80bfa4b1bc7a695e696eb43a9636c 2059 2056 2014-11-03T15:19:06Z Ave082 33 wikitext text/x-wiki = SAMPA DAQ Registers = == Command and Control module registers == The registers for the command and control module, located at address 0x0000 from the UART or 0xFF200000 from the HPS, is listed in table 4.1 {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | SC_ADD | [15:0] | 0x00 | RW | 0x00 | [4:0] | Slow control: Register address |- | | | | RW | 0x00 | [9:5] | Slow control: Channel address |- | | | | RW | 0x00 | [13:10] | Slow control: Chip address |- | | | | RW | 0x00 | [14] | Slow control: Broadcast |- | | | | RW | 0x00 | [15] | Slow control: Write/ not read |- | SC_DAT | [19:0] | 0x01 | RW | 0x00 | [19:0] | Slow control: Data to write |- | SC_MASK | [19:0] | 0x02 | RW | 0x00 | [19:0] | Slow control: Mask for writing * |- | CMD | [31:0] | 0x03 | RW | 0x00 | [15:0] | Commands, see table 4.2 |- | | | | RW | 0x00 | [31:15] | Loop count for commands |- | SC_RLT | [19:0] | 0x04 | R | 0x00 | [12:0] | Slow control: Response from SAMPA |- | SC_ERR | [1:0] | 0x05 | R | 0x00 | [0] | Error: Timeout waiting for response from slow control |- | | | | R | 0x00 | [1] | Error: Response from SAMPA not as expected |- | LNK_STS | [31:0] | 0x06 | R | 0x00 | [31:0] | Ethernet link status * |- | EVT_CFG | [31:0] | 0x07 | RW | 0x01 | [1:0] | Test signal output, see table 4.3 |- | | | | RW | 0x00 | [2] | Enable SLVS testing |- | | | | RW | 0x00 | [3] | Enable continuous readout of shiftregister |- | | | | RW | 0x00 | [31:3] | Reserved * |- | EVT_CNT | [31:0] | 0x08 | R | 0x00 | [31:0] | Reserved * |- | EV_BL | [31:0] | 0x09 | R | 0x00 | [31:0] | Reserved * |- | SMP_STS1 | [30:0] | 0x0A | R | | | Status of signals to and from SAMPA (updated every clock cycle) |- | | | | R | | [12:0] | Test data output from SAMPA |- | | | | R | | [16:13] | Serial out [3:0] |- | | | | R | | [18:17] | Number of serial out |- | | | | R | | [19] | Enable ZSU |- | | | | R | | [20] | Enable BC2 |- | | | | R | | [21] | Enable TCFU (deprecated) |- | | | | R | | [22] | Enable BC1 |- | | | | R | | [25:23] | Select test output |- | | | | R | | [26] | Select ADC0 or test input |- | | | | R | | [30:27] | Chip address |- | SMP_STS2 | [5:0] | 0x0B | R | | | Status of signals to and from SAMPA cont. |- | | | | R | | [0] | Slow control to SAMPA |- | | | | R | | [1] | Slow control from SAMPA |- | | | | R | | [2] | Reset_n |- | | | | R | | [3] | Event trigger |- | | | | R | | [4] | Heartbeat trigger |- | | | | R | | [5] | Sync signal |- | SMP_CFG | [13:0] | 0x0C | RW | | | SAMPA static signals, see SAMPA spec document for further details |- | | | | RW | 0x02 | [1:0] | Number of serial out |- | | | | RW | 0x00 | [2] | Enable ZSU |- | | | | RW | 0x00 | [3] | Enable BC2 |- | | | | RW | 0x01 | [4] | Enable TCFU |- | | | | RW | 0x01 | [5] | Enable BC1 |- | | | | RW | 0x03 | [8:6] | Select test output |- | | | | RW | 0x01 | [9] | Select ADC0 or test input |- | | | | RW | 0x01 | [13:10] | Chip address |- | SLVS_ERR | [15:0] | 0x0D | R | 0x00 | | SLVS errors detected |- | RAD_ERR | [31:0] | 0x0E | R | | | Errors detected in shiftregister test |- | | | | R | 0x00 | [15:0] | Bit 0 errors |- | | | | R | 0x00 | [31:16] | Bit 1 errors |- | VER | [31:0] | 0x0F | R | | | SVN version build was based on in dec |} Commands for command and control unit. {| class="wikitable" ! Value ! Description |- | 0x1 | Reset FPGA and SAMPA |- | 0x2 | Reset SAMPA |- | 0x3 | Send event trigger |- | 0x4 | Send heartbeat trigger |- | 0x5 | Send sync signal |- | 0x6 | Run readout of shiftregister once (RAD) |- | 0x7 | Reset errors in shiftregister count (RAD_ERR) |- | 0x8 | Execute slow control command |- | 0x9 | Reset HPS |} Test signals available for generation. {| class="wikitable" ! Value ! Description |- | 0x0 | Constant zeros |- | 0x1 | Sine wave, full wave, 512 samples pulse width |- | 0x2 | Saw wave, full wave, 512 samples pulse width |- | 0x3 | Triangle wave, full wave, 1024 samples pulse width |} == Data manager registers == The registers for the data manager module, located at address 0x0040 from the UART or 0xFF201000 from the HPS, is listed in table 4.4. {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | CNTRL | [7:0] | 0x00 | RW | 0x00 | | Control register |- | | | | RW | 0x00 | [0] | Enable acquisition |- | | | | RW | 0x00 | [7:1] | Reserved |- | PKT0 | [31:0] | 0x01 | R | 0x00 | [31:0] | Packets written to memory from channel 0 |- | PKT1 | [31:0] | 0x02 | R | 0x00 | [31:0] | Packets written to memory from channel 1 |- | PKT2 | [31:0] | 0x03 | R | 0x00 | [31:0] | Packets written to memory from channel 2 |- | PKT3 | [31:0] | 0x04 | R | 0x00 | [31:0] | Packets written to memory from test-input/ADC |- | FIFO0 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 0 |- | FIFO1 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 1 |- | FIFO2 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 2 |- | FIFO3 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 3 |} 26ed28ba4f2007f6bc248896c8a07c9707cf274e 2060 2059 2014-11-03T15:19:38Z Ave082 33 wikitext text/x-wiki = SAMPA DAQ Registers = == Command and Control module registers == The registers for the command and control module, located at address 0x0000 from the UART or 0xFF200000 from the HPS, is listed in table 4.1 {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | SC_ADD | [15:0] | 0x00 | RW | 0x00 | [4:0] | Slow control: Register address |- | | | | RW | 0x00 | [9:5] | Slow control: Channel address |- | | | | RW | 0x00 | [13:10] | Slow control: Chip address |- | | | | RW | 0x00 | [14] | Slow control: Broadcast |- | | | | RW | 0x00 | [15] | Slow control: Write/ not read |- | SC_DAT | [19:0] | 0x01 | RW | 0x00 | [19:0] | Slow control: Data to write |- | SC_MASK | [19:0] | 0x02 | RW | 0x00 | [19:0] | Slow control: Mask for writing * |- | CMD | [31:0] | 0x03 | RW | 0x00 | [15:0] | Commands, see table 4.2 |- | | | | RW | 0x00 | [31:15] | Loop count for commands |- | SC_RLT | [19:0] | 0x04 | R | 0x00 | [12:0] | Slow control: Response from SAMPA |- | SC_ERR | [1:0] | 0x05 | R | 0x00 | [0] | Error: Timeout waiting for response from slow control |- | | | | R | 0x00 | [1] | Error: Response from SAMPA not as expected |- | LNK_STS | [31:0] | 0x06 | R | 0x00 | [31:0] | Ethernet link status * |- | EVT_CFG | [31:0] | 0x07 | RW | 0x01 | [1:0] | Test signal output, see table 4.3 |- | | | | RW | 0x00 | [2] | Enable SLVS testing |- | | | | RW | 0x00 | [3] | Enable continuous readout of shiftregister |- | | | | RW | 0x00 | [31:3] | Reserved * |- | EVT_CNT | [31:0] | 0x08 | R | 0x00 | [31:0] | Reserved * |- | EV_BL | [31:0] | 0x09 | R | 0x00 | [31:0] | Reserved * |- | SMP_STS1 | [30:0] | 0x0A | R | | | Status of signals to and from SAMPA (updated every clock cycle) |- | | | | R | | [12:0] | Test data output from SAMPA |- | | | | R | | [16:13] | Serial out [3:0] |- | | | | R | | [18:17] | Number of serial out |- | | | | R | | [19] | Enable ZSU |- | | | | R | | [20] | Enable BC2 |- | | | | R | | [21] | Enable TCFU |- | | | | R | | [22] | Enable BC1 |- | | | | R | | [25:23] | Select test output |- | | | | R | | [26] | Select ADC0 or test input |- | | | | R | | [30:27] | Chip address |- | SMP_STS2 | [5:0] | 0x0B | R | | | Status of signals to and from SAMPA cont. |- | | | | R | | [0] | Slow control to SAMPA |- | | | | R | | [1] | Slow control from SAMPA |- | | | | R | | [2] | Reset_n |- | | | | R | | [3] | Event trigger |- | | | | R | | [4] | Heartbeat trigger |- | | | | R | | [5] | Sync signal |- | SMP_CFG | [13:0] | 0x0C | RW | | | SAMPA static signals, see SAMPA spec document for further details |- | | | | RW | 0x02 | [1:0] | Number of serial out |- | | | | RW | 0x00 | [2] | Enable ZSU |- | | | | RW | 0x00 | [3] | Enable BC2 |- | | | | RW | 0x01 | [4] | Enable TCFU |- | | | | RW | 0x01 | [5] | Enable BC1 |- | | | | RW | 0x03 | [8:6] | Select test output |- | | | | RW | 0x01 | [9] | Select ADC0 or test input |- | | | | RW | 0x01 | [13:10] | Chip address |- | SLVS_ERR | [15:0] | 0x0D | R | 0x00 | | SLVS errors detected |- | RAD_ERR | [31:0] | 0x0E | R | | | Errors detected in shiftregister test |- | | | | R | 0x00 | [15:0] | Bit 0 errors |- | | | | R | 0x00 | [31:16] | Bit 1 errors |- | VER | [31:0] | 0x0F | R | | | SVN version build was based on in dec |} Commands for command and control unit. {| class="wikitable" ! Value ! Description |- | 0x1 | Reset FPGA and SAMPA |- | 0x2 | Reset SAMPA |- | 0x3 | Send event trigger |- | 0x4 | Send heartbeat trigger |- | 0x5 | Send sync signal |- | 0x6 | Run readout of shiftregister once (RAD) |- | 0x7 | Reset errors in shiftregister count (RAD_ERR) |- | 0x8 | Execute slow control command |- | 0x9 | Reset HPS |} Test signals available for generation. {| class="wikitable" ! Value ! Description |- | 0x0 | Constant zeros |- | 0x1 | Sine wave, full wave, 512 samples pulse width |- | 0x2 | Saw wave, full wave, 512 samples pulse width |- | 0x3 | Triangle wave, full wave, 1024 samples pulse width |} == Data manager registers == The registers for the data manager module, located at address 0x0040 from the UART or 0xFF201000 from the HPS, is listed in table 4.4. {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | CNTRL | [7:0] | 0x00 | RW | 0x00 | | Control register |- | | | | RW | 0x00 | [0] | Enable acquisition |- | | | | RW | 0x00 | [7:1] | Reserved |- | PKT0 | [31:0] | 0x01 | R | 0x00 | [31:0] | Packets written to memory from channel 0 |- | PKT1 | [31:0] | 0x02 | R | 0x00 | [31:0] | Packets written to memory from channel 1 |- | PKT2 | [31:0] | 0x03 | R | 0x00 | [31:0] | Packets written to memory from channel 2 |- | PKT3 | [31:0] | 0x04 | R | 0x00 | [31:0] | Packets written to memory from test-input/ADC |- | FIFO0 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 0 |- | FIFO1 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 1 |- | FIFO2 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 2 |- | FIFO3 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 3 |} f5cbb27d18ebe5031361b2a0d1626947fd228f53 File:Sampa.png 6 470 2071 2014-11-19T21:59:32Z Ave082 33 sampa MPW1 chip 3 wikitext text/x-wiki sampa MPW1 chip 3 30d63d4fa9d2644cbb3e054734268a97feb0abc4 SAMPA 0 467 2080 2079 2015-01-10T13:46:07Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====All latest files===== ;:;Download ;::*[[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 425cbb8a616cc68b15e1bb564ea74b6c18566136 2081 2080 2015-01-10T13:46:26Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] ==== Carrier boards ==== Comming == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====All latest files===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 576681ec1a400748e7ce3e692edd34b6e1f3e563 2083 2081 2015-01-29T14:11:16Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====All latest files===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 63===== Added basic run control to communicator and firmware. A set number of packets can be acquired. Fixed twos complement to ones complement conversion for ADC. System upgraded for Quartus 14.1 Kernel updated to 3.16 ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage. Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] be1efaa7d75c0d44ce5564de3201bcffd5cebc15 2084 2083 2015-01-29T14:12:31Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====All latest files===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage. Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 63===== Added basic run control to communicator and firmware. A set number of packets can be acquired. Fixed twos complement to ones complement conversion for ADC. System upgraded for Quartus 14.1 Kernel updated to 3.16 ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage. Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 121c91a02c7e64ab6d7da59a7ce49084521ddb82 2085 2084 2015-01-29T14:13:06Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====All latest files===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 63===== Added basic run control to communicator and firmware. A set number of packets can be acquired. Fixed twos complement to ones complement conversion for ADC. System upgraded for Quartus 14.1 Kernel updated to 3.16 ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] b91e4a99622b584a94b4c0cde4854d7238b33346 2086 2085 2015-01-29T14:14:20Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from =====All latest files===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card) (use save-as and remove extension .txt)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 63===== Added basic run control to communicator and firmware. A set number of packets can be acquired. Fixed twos complement to ones complement conversion for ADC. System upgraded for Quartus 14.1 Kernel updated to 3.16 ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card) (use save-as and remove extension .txt)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] ba1246f817f5a76ff2323f8accde6c4fd6c45e06 2087 2086 2015-01-29T14:18:11Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from If Windows renames the sampa_server or kernel with a .txt ending you need to remove this ending before copying the file to the memory card. =====All latest files===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 63===== Added basic run control to communicator and firmware. A set number of packets can be acquired. Fixed twos complement to ones complement conversion for ADC. System upgraded for Quartus 14.1 Kernel updated to 3.16 ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloadere (write to SD-card with dd/win32diskimager)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] e4606787833694e03eeb0b50f2a76833059b0a7f 2088 2087 2015-01-29T14:20:03Z Ave082 33 wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> ==== Analogue ==== [http://folk.uib.no/ave082/SAMPA/test_plan_chip01.pdf SAMPA MPW1 Chip 1 testplan and documentation] [http://folk.uib.no/ave082/SAMPA/test_plan_chip02.pdf SAMPA MPW1 Chip 2 testplan and documentation] ==== DSP ==== [http://folk.uib.no/ave082/SAMPA/SAMPA_MPW1_specs.pdf SAMPA MPW1 Chip 3 specifications] [http://folk.uib.no/ave082/SAMPA/heitor_graduation_project_SAMPA.pdf Heitor Guzzo Neves Thesis (DSP description)] == SAMPA DAQ Board Firmware and Software == ==== Source Code Repositories ==== [https://svnweb.cern.ch/cern/wsvn/SAMPA/ SAMPA SVN for web] [https://svn.cern.ch/reps/SAMPA/ SAMPA SVN for client] ==== Documentation ==== [http://folk.uib.no/ave082/SAMPA/DAQ_board_spec.pdf SAMPA DAQ board specifications] ====Registers==== See [[SAMPA/SAMPA Registers|SAMPA Registers]] for latest updated information on SAMPA registers. See [[SAMPA/SAMPA DAQ Registers|SAMPA DAQ Registers]] for latest updated information on SAMPA DAQ registers. ==== Compiled DAQ Firmware and Software Versions ==== The version is the same as the SVN version it was compiled from If Windows renames the sampa_server or kernel with a .txt ending you need to remove this ending before copying the file to the memory card. =====All latest files===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloader (write to SD-card with dd/win32diskimager)] =====Revision 63===== Added basic run control to communicator and firmware. A set number of packets can be acquired. Fixed twos complement to ones complement conversion for ADC. System upgraded for Quartus 14.1 Kernel updated to 3.16 ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=63&peg=63 SAMPA analyzer (ROOT code)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/zImage Kernel (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/socfpga.dtb devicetree (copy to SD-card)] ;::*[http://folk.uib.no/ave082/SAMPA/rev63/SoCKit_bootloader.img bootloader (write to SD-card with dd/win32diskimager)] =====Revision 59===== Added status register for ADC pins and a register for the version of the running sampa_server. Added root file generation for the analyser. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev59/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev59/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/24)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=59&peg=59 SAMPA analyzer (ROOT code)] =====Revision 55===== Fixed readout. Use SD Card from rev42 and add sampa_server. ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev55/sampa_server sampa_server program to be put on SD card] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_FPGA_test_board.jic FPGA firmware with internal SAMPA (controllable)] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev55/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/23)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=55&peg=55 SAMPA analyzer (ROOT code)] =====Revision 42===== ;:;Download ;::*[http://folk.uib.no/ave082/SAMPA/rev42/sockit.zip SD Card image] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board_w_sampa.jic FPGA firmware with internal SAMPA for testing] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_FPGA_test_board.jic FPGA firmware without internal SAMPA] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA%20communicator.exe SAMPA communicator] ;::*[http://folk.uib.no/ave082/SAMPA/rev42/SAMPA_analyzer.exe SAMPA analyzer (Windows binary) (ROOT 5.34/21)] ;::*[https://svnweb.cern.ch/cern/wsvn/SAMPA/testing/software/SAMPA_analyzer/SAMPA_analyzer.cpp?op=dl&rev=42&peg=42 SAMPA analyzer (ROOT code)] ==== Network fix ==== To set a fixed mac: Connect to terminal, warm reboot (key 6), press key in terminal to stop at uboot, type setenv ethaddr '7e:a5:87:ec:06:03' saveenv boot ==== Root compile problem ==== LNK1123: failure during conversion to COFF Install [http://www.microsoft.com/en-us/download/details.aspx?id=23691 VS2010 SP1] 82e504b32972c78adebc9c2e70e34c6e078058dd Modelsim/Questa 0 33 2082 1726 2015-01-21T10:40:37Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cycloneiii /prog/altera/vhdl_libs/cycloneiii vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL]] [[http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide]] [[http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer]] [[http://bitvis.no/products/bitvis-utility-library/ Bitvis utility library]] [[Category:Mikroelektronikk]] e1e50f788e95908e7f57061d966535072daf310a 2096 2082 2015-03-18T10:57:29Z Nfyku 4 Changed from Cyclone III to Cyclone V wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cyclonev /prog/altera/vhdl_libs/cyclonev vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [[http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL]] [[http://www.ashenden.com.au/ Ashenden Designs]] [[http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example]] [[http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)]] [[http://model.com/content/modelsim-pe-simulation-and-debug Modelsim]] [[http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL]] [[http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide]] [[http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer]] [[http://bitvis.no/products/bitvis-utility-library/ Bitvis utility library]] [[Category:Mikroelektronikk]] 74b49e66aaa889e633bbd5bcfcf63da40947c8a9 2097 2096 2015-03-18T10:58:48Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cyclonev /prog/altera/vhdl_libs/cyclonev vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] [http://www.ashenden.com.au/ Ashenden Designs] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] [http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [http://bitvis.no/products/bitvis-utility-library/ Bitvis utility library] [[Category:Mikroelektronikk]] 76b3ca8a37b65d15b86a3e496a872117e878b029 PHYS321 0 278 2089 2013 2015-03-05T12:18:54Z Ave082 33 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] 5a7cee1296d5317a6b335de33e9c4ff2af5e54ac Øvingsoppgaver PHYS321 0 169 2090 1109 2015-03-05T12:48:33Z Ave082 33 wikitext text/x-wiki === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC_studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal. (Sjekk skrive stabilitet og lese stabilitet) # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. Sjekk LVS og DRC. === VHDL === Utfyllende tekst kommer [[Category:Mikroelektronikk]] 52c063eb80ceed0a696fbca61009e7479de18b8d 2091 2090 2015-03-05T12:49:20Z Ave082 33 wikitext text/x-wiki === Øving i bruk av IC Studio === Denne øvingen skal gi innblikk i bruken av [[IC_studio|IC Studio]] Du skal tegne en 6 transistor SRAM-celle med Bitline conditioning og write driver (kun 1 bit RAM). Bruk hierarkisk skjema, der hver hovedfunksjon har sitt underskjema. # Tegn skjema # Simulere og verifiser at RAM-cellen virker som den skal. (Sjekk skrivestabilitet og lesestabilitet) # Tegn utlegg for selve RAM-cellen. Pass på at den kan stables ved siden av identiske celler, slik at en NxM blokk RAM kan bygges opp. Sjekk LVS og DRC. === VHDL === Utfyllende tekst kommer [[Category:Mikroelektronikk]] b93586b33adaf944d6cf975300a1eeb12b1af7fa Simulering av VHDL 0 34 2092 1095 2015-03-09T12:24:10Z Nfyku 4 Har endret litt på teksten ang. første gangs bruk wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa== '''Aller første gang''' man skal arbeide med Mentor Graphics verktøy skriv følgende kommando i et terminalvindu. <pre> ssh -X mikroserver3 /prog/design_kits/micro.init.csh </pre> Neste gang skriver man følgende i et teminalvindu: <pre> ssh -X mikroserver3 mentor questa </pre> kommandoen (aliaset) mentor sørger for velge riktige stier og miljøvariable. ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] 6030ab92438343a017471bfd9ebec546e9cc9ed6 VHDL Testbenk 0 35 2093 1093 2015-03-09T13:21:35Z Nfyku 4 wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> ssh -X mikroserver3 mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim -voptargs=+acc SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscillasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> Om en legger til testbenk signalene i wave vinduet så får en opp markeringer der hvor det har oppstått feil, rød for error og gul for warning. En kan så trykke på markeringene og få opp feilmeldingen. ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. 021811feb94477f617ec45a98008398d332e7223 XJDeveloper 0 410 2094 1808 2015-03-16T14:27:12Z Aoe033 85 wikitext text/x-wiki == XJDeveloper == Dette er ei innføring i XJDeveloper. Tilhøyrande dokumentasjon er meint brukt til XJDemo Board versjon 1.2. === Dokumentasjonsmappa === Dokumentasjonsmpappa inneheld: * Krinsskjema * Bilete av demokort v.1.2. * Demokort-netliste * Diverse test-filer * Device-filer === Sette opp kortet === Det fyrste som gjerast er å kople demokortet til datamaskina gjennom XJ Link. Bruk ein av USB-inngongane på baksida av maskina. Deretter må det lagast ei prosjektmappe, som skal innehalde alle filene som vert laga. Mappe-plasseringa speler inga rolle. For å starte XJDeveloper: start>Programs>XJTAG 2.4>XJDeveloper. Lag eit nytt prosjekt, og lagre det i prosjektmappa. Gje prosjektet namnet "demo". Når dette er gjort, dukker dialogboksen "Add board" automatisk opp. I denne boksen gjev du kortet namn, og du gjev XJDeveloper netlista til demokortet. Gje kortet namnet "XJDemo". Netlista finn du i dokumentasjonsmappa - demo.net I tillegg har vi ei BOM-fil, som gjev XJDeveloper tilleggsinformasjon om komponentane på kortet. Denne fila er ikkje strengt naudsynt, men er nyttig. I dokumentasjonen finn du BOM-fila - demo.bom Legg til BOM-fila under BOM-settings. Etter å ha trykka next, set du tredje kolonne til å vere "Device Reference", fjerne kolonne "Value", og siste kolonne til "Device Description". Save. Under Power/Ground Nets i Setup-menyen i venstre marg er det to nett, 3.3V og GND. Dra desse to neta over i riktig kolonne til høgre. No veit XJTAG kva nett som er power og jord, og vil ikkje forsøke å skrive til desse. ==== Identifisere komponentane ==== Neste steg er å identifisere JTAG-kjeden. Trykk på add i Chain Setup. Til høgre for TDI, trykker du på select og vel CN1, pin 5. Trykk OK. Så kjem IC2.B3 opp i Select Next Pin-vinduet. Dra denne ned i JTAG Devices-lista. Trykk på Browse, og velg fila med same namn som IC2, altså XC9536XL_cs48.bsd Gjer det same med IC3.1, 3032at44.bsd. Begge desse filene finst i dokumentasjonsmappa. Neste steget er ein resistor, R49. Dra denne ned i JTAG-Devices-lista, men velg Connect device i den øvste fana. Så vel du Create file. Namngje fila Resistor, og connect 1 til 2. Til slutt kjem IC1.13. Høgreklikk og set denne til TDO. Save. No har vi etablert JTAG-kjeden. Deretter skal vi kategorisere non-JTAG-devices. Under Categorise Devices-fana i venstremargen, finn vi alle komponentane(devices), og ingen er endå kategoriserte. * Risistorane som er markerte med "Suggested Series Resistors" kategoriserer vi som passive komponentar. Dra alle over i "Passive", og velg Resistor.pdd som allereie er laga. * Alle jumperane på krinsen lar vi og vere passive. Gje jumperane[1,2,3,5,6] namn [jumper1,jumper2,...,jumper6] når vi lager filer til desse. For jumper[1,2,3] ser vi frå krinsteikninga at desse er meint kopla. Kople difor pinane 1-2,3-4,5-6,7-8 for desse tre jumperane. Jumper5 og jumper6 skal vere opne. * Alle pull-resistorane kategoriserer vi óg som passive. Når vi skal lage PDD-filer for desse, gjer vi som ved serie-motstanden, bortsett frå at vi skiftar frå Connect->Pull. Connect 1-2. ** No er det dukka opp ein siste resistor, R26. Legg denne til i resistor.pdd. * Under Ignore Devices legg vi kondensatorane, connectorane og "Other Resistors". I tillegg legg vi Switch1 under ignore(denne kjem vi attende til). * Under Test Devices legg vi til IC4,IC5, alle diodane, SW2 og SW3. IC4 gjev vi namnet EEPROM, IC5 gjev vi namnet SRAM, diodane gjev vi namnet LED, SW2 gjev vi namnet pushbutton1 og SW3 gjev vi namnet pushbutton2. * Under Logic Devices legg vi IC1. Frå krinsteikninga finn vi kva komponent IC1 er, og gjev XJDeveloper informasjon om det. Det neste steget er å identifiserer tilkoplingspinnane. Under Pin Mapping ser vi JTAG connectoren. Frå krinsteikninga finn vi korleis denne skal bestemmast(CN1). Dei pinnane som ikkje er gjevne namn i krinsteikninga, lar vi vere "input". === Testing === Det siste steget er å klargjere for test. Under Run and Deploy, finn ein fana XJRunnet Setup. Velg New>Add Global Function>CONNTEST. Gje testen eit fornuftig namn. Save. For å køyre testane som er sett opp under XJRunner-fana, trykk på Run Test-fana, og køyr testen. Når vi tester, ser vi at vi får opp ein short mellom to "created" net på IC2. Desse to neta finst på krinsen, men er ikkje med i netlista. For å be XJDeveloper sjå vekk i frå denne feilen, kople dei to neta saman. Det kan gjerast under fana Connections i venstremargen. Trykk på Add, velg Pin to Pin, og kople dei to neta saman. For å komme unna problemet med at GP1 er stuck at 1/0, går vi inn på Constant Pins-fana og set denne pinen til anten High/Low. Hugs å fysisk sett brytaren SW1 anten High/Low. Viss alt er sett riktig opp, skal vi ikkje lenger få feilmeldingar når vi køyrer testen. For å gje oss høve til å lage feil, er kortet utstyrt med jumperar. Sjå på krinsteikninga, og lag stuck at 0/1, kortslutningsfeil og brotfeil. ==== Minnetest(SRAM) ==== XJDeveloper har laga ei fil SRAM.xje frå informasjonen vi har gjeve programmet. For å kunne bruke ein ferdiglaga, enkel minnestest, modifiserer vi denne fila til å passe med testen. I dokumentasjonsmappa finn du fila SRAM.txt. Erstatt innhaldet i SRAM.xje med SRAM.txt. Den første, og enkle, minnetesten, ligg lagra i dokumentasjonsmappa - SRAM_test.txt. Kopier innhaldet i denne fila, og lim det inn Test Editor. Test Editor er eit av vindauga under Test Device Files-fana i venstremargen. Save. Lag så ein ny test i XJRunner-fana. Velg Add Device Function>IC5>Test. Gje testen eit fornuftig namn. XJTAG har vedlagt demokortdokumentasjonen gjeve oss ein meir utfyllande minnetest. Denne er vedlagt i dokumentasjonsmappa, og heiter memtestSRAM.xje. For å bruke denne, høgreklikker vi på IC5 i Categorised Devices>Configure>Other Device File>SRAM_SOP24.xje. Dette legg automatisk memtestSRAM.xje til som tilleggskode. No kan testen køyrast på nytt. Bruk jumperane kring minnekrinsen til å lage feil. ==== Flash-test ==== Hvis du får opp følgende feilmelding under kjøring av flash-test: <span style="color:red"> memtestFlash.xje(148): Zero is an invalid argument to LOG. IC3.TestDestructive failed >>>> FAILED <<<< </span> Er dette fordi initialiseringsfunksjonen ''Init();'' ikke er inkludert i "Test Destructive"-funksjonen. Dette kan fikses ved å legge inn ''Init();'' manuelt i filen ''AMD_Flash.xje'', som du finner i XJDeveloper: Velg Test Device Files (Under fanen ''Setup'', til høyre i XJDeveloper) -> AMD Flash 48-Pin TSOP 4Mb x8.xje (Under fanen ''Navigator'') -> AMD_Flash.xje Bruk ctrl+F for søk og skriv inn "TestDestructive()". Skriv inn ''Init();'' rett under linjen ''result := RESULT_PASS'', og trykk lagre. For å gjennomføre Non-Destructive test må dette også gjøres i "TestNonDestructive()"-funksjonen i samme fil. ==== EEPROM-test ==== Vedlagt i dokumentasjonen er fila 24LC23A.xje. Dette er testfila til IC4 - EEPROM. Kopier innhaldet i 24LC23A.xje inn i "Test Editor" under EEPROM i venstremargs-fana Test Device Files. Save. Då får ein to feilmeldingar, fordi funksjonane testen refererer til manglar. Desse finst i IIC.xje, som òg ligg i dokumentasjonen. Under Additional Code Files legg du IIC.xje til EEPROM. Save. På same måte som for SRAM-testen, må vi lage ein EEPROM-test under XJRunner-fana. No kan du køyre testen på nytt. [[Category:Lagt til forklaring på feil i flash-test og forslag til retting.]] 0e2cabefbdf7949cb012858aee1be182100a2a62 Synthese av VHDL 0 36 2095 1742 2015-03-18T10:56:00Z Nfyku 4 Changed from Cyclone III to Cyclone V wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte synteseprogrammet: precision Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone V med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: setenv QUARTUS_ROOTDIR /prog/altera/11.1/quartus ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: vmap cyclonev /prog/altera/vhdl_libs/cyclonev Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] e9b07f7e392962169398d61947e81bc575721f6e Cadence Virtuoso setup 0 415 2098 2040 2015-04-07T22:19:52Z Ave082 33 wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths) Run "source europractice_installer.sh" and wait until done. Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang=tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </script> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh c4292b0b91d6bc4707cc24709ceb0e47e9148091 2099 2098 2015-04-07T22:23:21Z Ave082 33 wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths) Run "source europractice_installer.sh" and wait until done. Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang="tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </script> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh 02aea09a6b0a936bbd9eb8b3030e6ade46d721c1 2100 2099 2015-04-07T22:26:44Z Ave082 33 wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths){{-}} Run "source europractice_installer.sh" and wait until done.{{-}} Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang="tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </script> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh ln -s /prog/cadence/cadence_$YEAR\_init.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh 4f4a57d5b5b321561b35233b5cfaa3320019e4aa 2101 2100 2015-04-09T12:33:49Z Ave082 33 wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths){{-}} Run "source europractice_installer.sh" and wait until done.{{-}} Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang="tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </source> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh ln -s /prog/cadence/cadence_$YEAR\_init.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh 9af1517630dbbe11d205551f46750354f1ac3a22 2103 2101 2015-08-13T14:12:59Z Ave082 33 wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths){{-}} Run "source europractice_installer.sh" and wait until done.{{-}} Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang="tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </source> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh ln -s /prog/cadence/cadence_$YEAR\_init.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh *sysstat d29d3293b7d5d1e1e68148f38fd491b89cfb4e9f MediaWiki:Common.css 8 471 2102 2015-06-29T12:30:16Z Mihho 3 Created page with "/* CSS placed here will be applied to all skins */ body.page-Main_Page h1.firstHeading { display:none; }" css text/css /* CSS placed here will be applied to all skins */ body.page-Main_Page h1.firstHeading { display:none; } 2f9ffedd9f1982bd8ddc1de01c138afb202d218e Cadence Virtuoso overview 0 38 2104 2048 2015-08-25T11:38:30Z Nfyku 4 /* Analog IC design flow using Cadence from basics(Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout) */ wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[Category:Mikroelektronikk]] b6130238441f4d73a9a7d26642157154db1e70ad 2125 2104 2015-10-27T09:24:17Z Ogr043 86 wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] = Simulation = [[Testbench|Virtuoso Testbench]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[Category:Mikroelektronikk]] fb71833a4002f7dc7b5a2ac6e5baafd2814b9c63 IHP 130nm process 0 472 2105 2015-08-25T12:07:24Z Nfyku 4 Created page with "=Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design...." wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver3 tcsh The preferred shell is tcsh. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. First chose a parent directory, e.g. cd ~/ihp Copy the user environment design and set general Cadence environment variables by doing: cp -rp /prog/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/work/skel . source /prog/cadence/cadence_init.csh Change cshrc.cadence in ~/ihp/skel/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment source ~/ihp/skel/cds/cshrc.cadence Start the design tool virtuoso & [[Category:Mikroelektronikk]] 01927e2b9cf527a431e28bba738a2670366e7c6a 2106 2105 2015-08-25T12:09:08Z Nfyku 4 /* Cadence design with IHP 130nm process */ wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver3 tcsh The preferred shell is tcsh. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. First chose a parent directory, e.g. cd ~/ihp Copy the user environment design and set general Cadence environment variables by doing: cp -rp /prog/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/work/skel . source /prog/cadence/cadence_init.csh Change cshrc.cadence in ~/ihp/skel/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment source ~/ihp/skel/cds/cshrc.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation [[Category:Mikroelektronikk]] 48ddef1c2229f4b4a951849b8fa25f91f23bb046 Transistor operating point printer 0 466 2107 2047 2015-08-28T13:47:52Z Nfyku 4 wikitext text/x-wiki This script can be used to print the operating point parameters of all transistors in your design. Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a Debug Test with DC analysis: [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> The results file can also be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] [[Category:Mikroelektronikk]] 3d8d4b56269f9725310bce7efa9397ddbeffa5ce 2108 2107 2015-08-28T13:48:21Z Nfyku 4 wikitext text/x-wiki This script can be used to print the operating point parameters of all transistors in your design. Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a Debug Test with DC analysis: [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> The results file can also be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] [[Category:Mikroelektronikk]] 207adffd5916f145dd993b6c560390bc8112c39f ParticlePhysicsGroupMeetings 0 139 2109 1776 2015-09-09T07:34:37Z Nfyal 26 wikitext text/x-wiki == Seminar information == Our group meetings (some) are some at 10:15, on vidyo, look for specified category. Category "BERGEN SUSY and DM will be used as this meetings are already booked, but the subjects discussed will depend on the meeting and are pertinent to all HEPP project (High Energy Particle Physics) https://indico.cern.ch/category/2/ == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] Talks from Bergen in CERN indico (some of them visible only for ATLAS or ALICE members)<br> * Talks and events from UiB at CERN [https://indico.cern.ch/search.py?categId=0&p=bergen&f=&collections=&startDate=&endDate=&sortField=&sortOrder=d] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 87c515c041db87161f0bea66f652ae5e22501f42 2110 2109 2015-09-09T09:29:52Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are some at 10:15, on vidyo, look for specified category. Category "BERGEN SUSY and DM" will be used as this meetings are already booked, but the subjects discussed will depend on the meeting and are pertinent to all HEPP project (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] Talks from Bergen in CERN indico (some of them visible only for ATLAS or ALICE members)<br> * Talks and events from UiB at CERN [https://indico.cern.ch/search.py?categId=0&p=bergen&f=&collections=&startDate=&endDate=&sortField=&sortOrder=d] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] e3016b213752ce635f97a4c71f6da31d905098c9 2111 2110 2015-09-09T09:31:12Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Category "BERGEN SUSY and DM" will be used as this meetings are already booked, but the subjects discussed will depend on the meeting and are pertinent to all HEPP project (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] Talks from Bergen in CERN indico (some of them visible only for ATLAS or ALICE members)<br> * Talks and events from UiB at CERN [https://indico.cern.ch/search.py?categId=0&p=bergen&f=&collections=&startDate=&endDate=&sortField=&sortOrder=d] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] cc6d7cfb50620ef9343fb85b6b18fe403993ead6 2113 2111 2015-09-09T12:57:26Z Nfyal 26 /* Seminar and meeting information */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] Talks from Bergen in CERN indico (some of them visible only for ATLAS or ALICE members)<br> * Talks and events from UiB at CERN [https://indico.cern.ch/search.py?categId=0&p=bergen&f=&collections=&startDate=&endDate=&sortField=&sortOrder=d] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 1f9a18f0cb213a58f7b5334caed035e3caedb7d2 2114 2113 2015-09-09T13:31:22Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] cd3fb0ec28bac94760e03796712259be280fd2f7 2115 2114 2015-09-09T13:36:28Z Nfyal 26 Undo revision 2114 by [[Special:Contributions/Nfyal|Nfyal]] ([[User talk:Nfyal|talk]]) wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] Talks from Bergen in CERN indico (some of them visible only for ATLAS or ALICE members)<br> * Talks and events from UiB at CERN [https://indico.cern.ch/search.py?categId=0&p=bergen&f=&collections=&startDate=&endDate=&sortField=&sortOrder=d] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 1f9a18f0cb213a58f7b5334caed035e3caedb7d2 2116 2115 2015-09-09T13:39:10Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] cd3fb0ec28bac94760e03796712259be280fd2f7 2123 2116 2015-10-13T13:54:03Z Nfyal 26 /* Particle Physics Group Meetings/Seminars/Tutorials */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 65c6995b2dfb7debe28d079b198236383d3c8983 Particle Physics group 0 137 2112 2029 2015-09-09T12:54:32Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[From Higgs to Dark Matter 2014, in statu. nascendi, [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, there will be a PhD position in 2014, and PhD theory being announced now to start in 2015 all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 08/12/2009 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] a70e007d077d022655f504ffefc6c608a94c5eae 2117 2112 2015-09-25T21:50:29Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === Conferences === * [[From Higgs to Dark Matter 2014, in statu. nascendi, [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS is being evaluated now. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] ce47918107dd7a9d6f2f6f3381ebe09d986021f6 ATLASThesesNotes 0 234 2118 2078 2015-09-25T21:52:55Z Nfyal 26 /* Theses, Notes, Publications, ... */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * For older theses try the old pages: [[http://www.uib.no/fg/subatom/prosjekter/atlas]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] 0931e02a28a53b654c9b2c14aa300c9910925c07 Symbolsk løsning av nodeligninger med Matlab 0 217 2119 2028 2015-10-09T07:32:47Z Nfyku 4 Added single transistor stage, fig. 9.18 wikitext text/x-wiki <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0'; ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0'; ligning1=subs(ligning1,'1/(j*w*C)','Zc'); ligning2=subs(ligning2,'1/(j*w*C)','Zc'); pretty(ligning1); pretty(ligning2); disp('Solve for Vgs'); vgs_solved=solve(ligning2,'Vgs'); pretty(simplify(vgs_solved)); disp('Solve for Vout(vin)'); ligning3=subs(ligning1,vgs_solved,'Vgs'); Vout_solved=solve(ligning3,'Vout'); pretty(simplify(Vout_solved)) </pre> <pre> % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2015 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=simplify(subs(eq1,V1,solV1)); SolVo=simplify(solve(eq3,[Vo])); pretty(simplify(SolVo/Is)); </pre> fb0cffe8b6df7bddf47c517d213629eb19d59295 2120 2119 2015-10-09T07:37:02Z Nfyku 4 Nfyku moved page [[Nodeligninger for en source-følger]] to [[Symbolsk løsning av nodeligninger med Matlab]] without leaving a redirect wikitext text/x-wiki <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0'; ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0'; ligning1=subs(ligning1,'1/(j*w*C)','Zc'); ligning2=subs(ligning2,'1/(j*w*C)','Zc'); pretty(ligning1); pretty(ligning2); disp('Solve for Vgs'); vgs_solved=solve(ligning2,'Vgs'); pretty(simplify(vgs_solved)); disp('Solve for Vout(vin)'); ligning3=subs(ligning1,vgs_solved,'Vgs'); Vout_solved=solve(ligning3,'Vout'); pretty(simplify(Vout_solved)) </pre> <pre> % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2015 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=simplify(subs(eq1,V1,solV1)); SolVo=simplify(solve(eq3,[Vo])); pretty(simplify(SolVo/Is)); </pre> fb0cffe8b6df7bddf47c517d213629eb19d59295 2122 2120 2015-10-09T07:58:46Z Nfyku 4 wikitext text/x-wiki === Using Kirchoff's current law (KCL) on a source follower configuration to find Vout as a function of Vin === <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vout as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland ligning1='(Vout-Vgs)/Zc+gm*Vgs+Vout/Rl=0'; ligning2='(Vgs-Vout)/Zc+(Vgs-Vin)/Rs=0'; ligning1=subs(ligning1,'1/(j*w*C)','Zc'); ligning2=subs(ligning2,'1/(j*w*C)','Zc'); pretty(ligning1); pretty(ligning2); disp('Solve for Vgs'); vgs_solved=solve(ligning2,'Vgs'); pretty(simplify(vgs_solved)); disp('Solve for Vout(vin)'); ligning3=subs(ligning1,vgs_solved,'Vgs'); Vout_solved=solve(ligning3,'Vout'); pretty(simplify(Vout_solved)) </pre> === Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 to find Vo as a function of Is === <pre> % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2015 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; %% With feedforward capacitor eq1=sym('(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/Zc+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=subs(eq1,V1,solV1); SolVo=simplify(solve(eq3,[Vo])); disp('With capacitor only in feedforward loop'); pretty(simplify(SolVo/Is)); %% With series resistor and capacitor in feedforward loop eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=simplify(subs(eq1,V1,solV1)); SolVo=solve(eq3,[Vo]); disp('With series resistor and capacitor in feedforward loop'); pretty(simplify(SolVo/Is)); </pre> 6fed37fc1f8960bdf3c0c14aeaa1dff9bc6fc8b0 PHYS222 0 202 2121 2026 2015-10-09T07:41:32Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [http://www.k-state.edu/ksuedl/publications/Technote%201%20-%20Equivalent%20Noise%20Bandwidth.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf Elementary Physics of P-N Junctions]] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 86d59e8cd8621662fbc84112f8d7404440c9e934 Få tilgang til å opprette eller redigere sider i wikien 0 154 2124 366 2015-10-15T09:41:08Z Nfyku 4 wikitext text/x-wiki IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte sysops-rettigheter for å kunne opprette eller redigere sider. Noen brukere (Bureaucrats) kan gi slike rettigheter. Ta kontakt med en av dem hvis du trenger editeringsrettigheter. Husk å logge inn før du spør om slike rettigheter. * [http://www.uib.no/personer/Kjetil.Heitmann Kjetil Heitmann] * [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] * [http://www.uib.no/personer/Nikolai.Ostgaard Nikolai Østgaard] ---- <references/> [[Category:Tips and Tricks]] ae3f0729b28b97babfe8efaab4fe57509cc3d540 File:Selection 001.png 6 473 2126 2015-10-27T09:30:29Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Screenshot from 2015-10-27 10-38-37.png 6 474 2127 2015-10-27T09:42:21Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2128 2127 2015-10-27T09:43:22Z Ogr043 86 Ogr043 uploaded a new version of [[File:Screenshot from 2015-10-27 10-38-37.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Corner.png 6 475 2129 2015-10-27T09:44:03Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Sections.png 6 476 2130 2015-10-27T09:48:24Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Complete.png 6 477 2131 2015-10-27T09:54:39Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Cadence Testbench 0 478 2132 2015-10-27T09:55:10Z Ogr043 86 Created page with "= Simulate with corner cases = To simulate with the corner cases in the fabrication process you have to add the corner files provided in the design kit. File:Selection_001..." wikitext text/x-wiki = Simulate with corner cases = To simulate with the corner cases in the fabrication process you have to add the corner files provided in the design kit. [[File:Selection_001.png|200px]] Choose "Click to add corner" "Click to add" the model files you need. Ex. The corner files for the MOS transistor in IHP130nm process is located in $IHP_TECH/tech/SG13_MOS/library/spectre/cornerMOSlv_psp.scs After adding the model files needed proceed by adding multiple corners: [[File:corner.png|400px]] The model files contains sections with the different corners. Choose sections and make sure you enable the section "tick box" and name the corner with a corresponding name: [[File:sections.png|400px]] The corners setup also makes it possible to simulate for different temperatures or design variables like VDD and transistor length. Ex. test for three different temperatures with comma as separation: -20,30,80 [[File:complete.png|400px]] e0e14149454531724c1a85540b3a4abe36bb62ec ParticlePhysicsGroupMeetings 0 139 2133 2123 2015-11-17T17:21:03Z Nfyal 26 /* Seminar and meeting information */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 388740305fea988cb584cd1b8d15b55f3cab5d3b 2134 2133 2015-11-17T17:22:07Z Nfyal 26 /* Seminar and meeting information */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 65c6995b2dfb7debe28d079b198236383d3c8983 2135 2134 2015-11-17T17:22:24Z Nfyal 26 /* 2015 */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 81db6232d406ee65720b7b2a42ca605635dd4a80 2136 2135 2015-11-27T07:29:50Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 10:15, on vidyo, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/2/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2016 === Nordic b-annual particle physics meeting, please register before 15 december and book your hotel before 1st of December: http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 0fd22a9ff36110deb0d55aa39c45b1823bd144b4 PHYS321 0 278 2137 2089 2015-12-11T18:52:07Z Ogr043 86 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Installation, board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] [[Category:Mikroelektronikk]] 108ae0d2f0c23b8830eea84336c2ba7e8c415a09 2138 2137 2015-12-11T19:09:08Z Ogr043 86 /* Digilent Nexys 4 */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] [[Category:Mikroelektronikk]] bdb77e15c4cf45b5a4bb9b43493a115429d3fcb9 User:Nfo058 2 479 2139 2016-01-20T11:45:21Z Nfyal 26 Created page with "Here is page of Nikolai Fomin." wikitext text/x-wiki Here is page of Nikolai Fomin. 411e90d65abc99d5b3ce5fa1d372d63b539435ce Microelectronics group 0 25 2140 1997 2016-01-26T12:31:48Z Ogr043 86 wikitext text/x-wiki == Mikroelektronikk == Dokumentasjon for Mentor Graphics IC-programvaren finnes i katalogen /prog/mentor/icflow_2008_1/2008.1_rhelx86linux/icflow_home/shared/pdfdocs eller ../htmldocs/ . Bruk * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[Bitvis UVVM VHDL Verification Component Framework]] * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven * [[SmartFusion2]] Oppsett og design med SF2 * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus [[Category:Mikroelektronikk]] e1e75766861baff9f3e3e0a8a1b15df54dfa0bb2 File:Screenshot from 2016-01-26 14-02-13.png 6 480 2141 2016-01-26T13:02:50Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2143 2141 2016-01-26T13:03:43Z Ogr043 86 Ogr043 uploaded a new version of [[File:Screenshot from 2016-01-26 14-02-13.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2144 2143 2016-01-26T13:04:16Z Ogr043 86 Ogr043 uploaded a new version of [[File:Screenshot from 2016-01-26 14-02-13.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Bitvis UVVM VHDL Verification Component Framework 0 481 2142 2016-01-26T13:03:14Z Ogr043 86 Created page with "=== Introduction === Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete co..." wikitext text/x-wiki === Introduction === Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's included? === [[File:Screenshot from 2016-01-26 14:02:13.png|400px]] af9a5c1c2d455312640c58f71a15bf54d23a9c4d 2145 2142 2016-01-26T13:08:20Z Ogr043 86 wikitext text/x-wiki === Introduction === Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's included? === bcb19dc81cc8fdea45d7f360e10e5e64fadb3147 2147 2145 2016-01-26T13:11:12Z Ogr043 86 /* What's included? */ wikitext text/x-wiki === Introduction === Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's included? === [[File:Screenshot from 2016-01-26 14:08:42.png|thumb]] 361c03aae92c4f7ad3df2f86b8fcec8e3193f3f6 2152 2147 2016-01-26T14:04:25Z Ogr043 86 incl wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> === Introduction === Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === Let's create our own testbench for the IRQC === Copy the bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. Open up bitvis_irqc/tb/irqc_tb.vhd and delete it! Let's start over.... <pre> -- Add the standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; library STD; use std.env.all; --Also add the Bitvis UVVM Utility Library library uvvm_util; context uvvm_util.uvvm_util_context; --And the Verification IP for the simple bus interface library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; --And the design's package file use work.irqc_pif_pkg.all; </pre> Copy the bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. We can start trying out the example testbench before continuing. Open up Questa/Modelsim. Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 45f18eb0f077d53a4720ac51bf509b507174e212 2153 2152 2016-01-26T14:09:27Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === Let's create our own testbench for the IRQC === Copy the bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. Open up bitvis_irqc/tb/irqc_tb.vhd and delete the content! Let's start over.... <pre> -- Add the standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; library STD; use std.env.all; --Also add the Bitvis UVVM Utility Library library uvvm_util; context uvvm_util.uvvm_util_context; --And the Verification IP for the simple bus interface library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; --And the design's package file use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); begin -- HERE YOU WILL PUT THE REST OF THE CODE! end func; </pre> ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 7b2c7646061a6237cb8cd9872aa41f04e6fca406 2154 2153 2016-01-26T14:10:09Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials == Testbench creation == Copy the bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. Open up bitvis_irqc/tb/irqc_tb.vhd and delete the content! Let's start over.... <pre> -- Add the standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; library STD; use std.env.all; --Also add the Bitvis UVVM Utility Library library uvvm_util; context uvvm_util.uvvm_util_context; --And the Verification IP for the simple bus interface library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; --And the design's package file use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); begin -- HERE YOU WILL PUT THE REST OF THE CODE! end func; </pre> ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 9bb44a64af800e729daab239cca8e225bebf0108 2155 2154 2016-01-26T14:36:51Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === The provided interrupt controller is == Testbench creation == === Generate TB entity === === Add support process for clock generation === === Add test sequencer process === Copy the bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 4a289b20bc925ce3fecca3036e36d04388a4b477 2158 2155 2016-01-26T14:56:03Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == === Generate TB entity === === Add support process for clock generation === === Add test sequencer process === Copy the bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 9f8aa914460cc991175b69c8f044c5358442da7f 2159 2158 2016-01-26T15:11:39Z Ogr043 86 /* Testbench creation */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] Copy the bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. == Testbench creation == === Generate TB entity === === Add support process for clock generation === === Add test sequencer process === ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 3a0b061a041b9079e096799f33617c81d55b695f 2160 2159 2016-01-26T15:12:15Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity === === Add support process for clock generation === === Add test sequencer process === ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 47c38361f021e9e57fa0fff3f1582884366f012a 2161 2160 2016-01-27T13:46:48Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity === <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === === Add test sequencer process === ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 85b311f0c13d25c3635f613c50f68fc1dec1b394 2162 2161 2016-01-27T13:56:29Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === === Add test sequencer process === ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> b9652415f88ad4cdba4c10c6c8359a4a68602b49 2163 2162 2016-01-27T14:11:34Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> clock_gen(clk, clock_ena, 10 ns); clock_ena <= true; </pre> === Add test sequencer process === ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> 2b22ce4d7592f34549ad1f52b3dc5b9a203ea488 2164 2163 2016-01-27T14:14:41Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> clock_gen(clk, clock_ena, C_CLK_PERIOD); clock_ena <= true; </pre> === Add test sequencer process === ==Open up Questa/Modelsim== Change directory to the script folder (obviously change to your folder.....): <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> a59d06bc7b5078b61c3d7dd2717ce0cc169f7859 2165 2164 2016-01-27T15:08:13Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting this out will result in no log whatsoever... ce1a518747b4644e9f1af3bcdac839ac922e34b9 2166 2165 2016-01-27T15:14:46Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == 3f81991cc57423af94da5c2982f679e2b72ef5b9 2167 2166 2016-01-27T15:51:51Z Ogr043 86 /* Verbosity control */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. 86157ce94d27da4debf05aff8a1fde524f2c14a0 2168 2167 2016-01-27T15:52:43Z Ogr043 86 /* Verbosity control */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. 6f312183ef58bab64c94b1043531b8be89378e2b 2169 2168 2016-01-28T11:16:33Z Ogr043 86 /* Verbosity control */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == 56b5bd836c106050970c2cd42fc07e0ba284eaa4 2170 2169 2016-01-28T11:53:50Z Ogr043 86 /* Implement first tests */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intention. These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); </pre> b76235a97da87bd6b4de8557f8aa9df94adad74c 2172 2170 2016-01-28T11:55:09Z Ogr043 86 /* Implement first tests */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intention. These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); </pre> 63dbc0417592bc73fbfdf7907a7ea9c813ec73db 2173 2172 2016-01-28T12:06:30Z Ogr043 86 /* Implement first tests */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefor can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> 1dc16449f0796489bbc840b5648f24c3f5464f94 2175 2173 2016-01-28T13:02:21Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|300px]] 8e5d6bad53285a55014172c71fa6b91e5b7814a4 2176 2175 2016-01-28T13:03:12Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|600px]] 8d8b56070296e962ad236fb31a02c080e4e2c726 2177 2176 2016-01-28T13:03:33Z Ogr043 86 /* Implement first tests */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] 872565a96c613a15d09b21151f7d7f7987971efb 2178 2177 2016-01-28T13:11:59Z Ogr043 86 /* Implement first tests */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> a7ebd2486506b26c60df85ed86f2186c12f3954f File:Screenshot from 2016-01-26 14-08-42.png 6 482 2146 2016-01-26T13:09:32Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2148 2146 2016-01-26T13:11:40Z Ogr043 86 Ogr043 uploaded a new version of [[File:Screenshot from 2016-01-26 14-08-42.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Test.png 6 483 2149 2016-01-26T13:12:15Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:1.png 6 484 2150 2016-01-26T13:13:58Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 ATLASTutorials 0 160 2151 722 2016-01-26T13:24:35Z Nfyal 26 /* Upcoming tutorials */ wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[Software workshop, 09/09-09]] == Upcoming tutorials == ATLAS analysis tutorial, 7-8 February 2016, Oslo https://indico.cern.ch/event/472469/overview == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] f342d470e2ca1b9c854cd13ff09914a53158cddf File:Irqc.png 6 485 2156 2016-01-26T14:52:05Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Irqc2.png 6 486 2157 2016-01-26T14:55:01Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Tb.png 6 487 2171 2016-01-28T11:54:58Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Error.png 6 488 2174 2016-01-28T13:01:56Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Sim.png 6 489 2179 2016-01-28T13:14:02Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Bitvis UVVM VHDL Verification Component Framework 0 481 2180 2178 2016-01-28T13:28:04Z Ogr043 86 /* Implement first tests */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms? == 7c7cbb638c314e547f750c9f6ecb36ed3443a0ff 2181 2180 2016-01-28T13:59:38Z Ogr043 86 /* Subprograms? */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> 586f9fca0386ddb3704f6fec23f799f237ab3e6c 2182 2181 2016-01-28T14:04:06Z Ogr043 86 /* Register access */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this to: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at high level. == 568828c75aac9f74a092c559ed9f2cb108d68d9c 2184 2182 2016-01-28T14:06:18Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this to: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. [[File:bfm.png|550px]] == 871718b8c8098a8185d50166953dcef4686d6690 2185 2184 2016-01-28T14:30:20Z Ogr043 86 /* Register access */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> 351d124622a28c004a4b028788e1aa5b245865e1 2186 2185 2016-01-28T14:40:28Z Ogr043 86 /* Subprograms */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> 7e68d70338a08b79162d7b5eadd176ed42f39139 2189 2186 2016-01-28T14:44:41Z Ogr043 86 /* Checking register write and read */ wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|400px]] However, if there's an error: [[File:error2.png|400px]] fea636cd9b9a73a71ca0a4e84b5aea666d0b6dda 2190 2189 2016-01-28T15:02:15Z Ogr043 86 wikitext text/x-wiki <pre> -- Copyright (c) 2016 by Bitvis AS. All rights reserved. -- You should have received a copy of the license file containing the MIT License (see LICENSE.TXT), if not, -- contact Bitvis AS <support@bitvis.no>. -- UVVM AND ANY PART THEREOF ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -- IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH UVVM. --======================================================================================================================== </pre> This wiki page steals heavily from the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here]. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] 088959e8bd1fc661871246c0c29365f0b6093540 2191 2190 2016-01-28T15:16:06Z Ogr043 86 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref name=UVVM /> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == UVVM LICENCE AGREEMENT == {{reflist|refs=<ref name=UVVM>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> }} 12cb38ee8ef27f23a9dfa6739d121aee6390864c 2192 2191 2016-01-28T15:16:55Z Ogr043 86 /* UVVM LICENCE AGREEMENT */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref name=UVVM /> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == UVVM LICENCE AGREEMENT == {{reflist|refs=<ref name=UVVM>Test</ref> }} fb138679d1c92cc3f9a32819e271dee006cfa017 2193 2192 2016-01-28T15:18:21Z Ogr043 86 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref name=UVVM /> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == UVVM LICENCE AGREEMENT == {{reflist| refs= <ref name=UVVM>This is the jukeboxes reference.</ref> }} f91f299731124b3c413c64037320eefb85e29d7c 2194 2193 2016-01-28T15:20:54Z Ogr043 86 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>''LibreOffice For Starters'', First Edition, Flexible Minds, Manchester, 2002, p. 18</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == UVVM LICENCE AGREEMENT == {{reflist}} 9f666327ba047c4a7515ac8bea6910ec11402795 2195 2194 2016-01-28T15:21:22Z Ogr043 86 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Libraries used for string handling in UVVM library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == UVVM LICENCE AGREEMENT == {{reflist}} 5793b096d6243c2ab5bdf77207ff472664d81e0c 2196 2195 2016-01-29T07:38:27Z Ogr043 86 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == UVVM LICENCE AGREEMENT == {{reflist}} b53faac8270f886c6f29d04d1906528c76e5c44e 2197 2196 2016-02-02T09:17:29Z Ogr043 86 /* Checking register write and read */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM LICENCE AGREEMENT == {{reflist}} 640ace23616e9cd29cfe0399584845004ce9d42d 2198 2197 2016-02-02T09:20:12Z Ogr043 86 /* Check stable */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM LICENCE AGREEMENT == {{reflist}} bf5fe179fdf09f93e1085ffc96831f6a145b7331 2199 2198 2016-02-02T09:20:26Z Ogr043 86 /* Check stable */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM LICENCE AGREEMENT == {{reflist}} c6876ce1c05b13dffc332d249afeaf6d2a8e3914 2200 2199 2016-02-02T11:19:07Z Ogr043 86 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM LICENCE AGREEMENT == {{reflist}} 154b5842754cc96e60759e49616509171eed17b9 2201 2200 2016-02-02T11:19:26Z Ogr043 86 /* UVVM Utility Library Testbench creation */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM LICENCE AGREEMENT == {{reflist}} 061a97a402f4633887df9b5c0df4c77d5bba025b 2202 2201 2016-02-02T11:20:23Z Ogr043 86 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} 1fc0909333530e224e03c6f3823344e83f025122 2203 2202 2016-02-02T12:22:56Z Ogr043 86 /* Register access */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} fea490d7ef46b29cec1dd5f4cd960a72fe47d638 File:Bfm.png 6 490 2183 2016-01-28T14:05:53Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Sim2.png 6 491 2187 2016-01-28T14:43:10Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Error2.png 6 492 2188 2016-01-28T14:44:35Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 PHYS321 0 278 2204 2138 2016-03-02T21:39:57Z Nas005 92 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== [[Category:Mikroelektronikk]] ec4c95cbcb29a83f4d28ca9a24e7ee692c51beec 2205 2204 2016-03-02T21:40:33Z Nas005 92 /* Vivado 2015.4 Install with free licens */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== == gh == [[Category:Mikroelektronikk]] 8b12970a8ce7bef9154968ac114d64fd54a58e1d 2206 2205 2016-03-02T21:41:14Z Nas005 92 /* gh */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== [[Category:Mikroelektronikk]] e624066e12e9a6832818b99a2a14ede66b2b75b6 2207 2206 2016-03-02T21:42:14Z Nas005 92 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== sdsasdad [[Category:Mikroelektronikk]] e884dba11083ec4ac715bd338ea0f22c17c89035 2208 2207 2016-03-02T21:42:30Z Nas005 92 /* Vivado 2015.4 Install with free licens */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== [[Category:Mikroelektronikk]] ec4c95cbcb29a83f4d28ca9a24e7ee692c51beec 2209 2208 2016-03-02T21:46:46Z Nas005 92 /* Vivado 2015.4 Install with free licens */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== * Install [[Category:Mikroelektronikk]] 0f519f61f326cd32c82496d901e66a6b732fef76 2221 2209 2016-03-02T22:13:29Z Nas005 92 /* Vivado 2015.4 Install with free licens */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== == Introkusjon == To download Vivado for free you must first create an account. By following this link [http://www.xilinx.com/support/download.html/ Xilinx web page] you will enter Xilinx download page. For this tutorial we will be using the 2015.4 version. To download for Windows Vivado HLx 2015.4 Web Install for Windows with SDK (EXE - 49.32 MB) For linux Vivado HLx 2015.4 Web Install for Linux with SDK (BIN - 76.98 MB) Run the installer and this will show, press next [[File:1.png]] Type your user name and password and press next [[File:2.png]] Agree to everything!!! Or else?!?! [[File:3.png]] Choose Vivado HL WebPACK [[File:4.png]] Make sure the Software Development Kit, Artix-7, Install Cable Drivers, and Acquire or Manage a License Key are all checked and click next. The DocNav file is not necessary but it allows you to • Find answers to your questions quickly through the integrated search • Manage documents on your desktop through the Download Manager • Always ensures you are reading the latest version of documentation Detailed information about using the tool and its features can be found in the Online Help Menu which you can access after installation. [[File:5.png]] [[File:6.png]] [[File:7.png]] [[File:8.png]] Choose a directory to Install you Vivado product, make sure you have adequate free space on your hard drive. The final screen summarizes your selections. Click install, and the installer will begin downloading the files it needs to install Vivado. When it is done this screen will pop up. Click ok and the license manager should open up. If not open Vivado press Help=>obtain a license key and this window will open. Choose “Get Free SDK, Vivado WebPACK” and then press Connect Now. . You will be redirected to Xilinx home page were you will need to sign in with user name and password. After clicking “sign in”, press “next” and this site will pop up Choose “Vivado Design Suite: HL WebPACK, Node-Locked License……..” and press Generate Node-Locked License. Next this window will pop up. Click next and a new window will pop up, click next again and this will show Open your E-mail and download the attached Xilinx.lic file. When you go back to the license manager this will show, press cancel. Go to Load License in the left menu. You should see this Click Copy License and upload the Xilinx.lic file and you will get this message If you now press the view license status in the left menu, you should see this You can now close the license manager and Vivado is good to go. CREATING NEW PROJECT Press create new project Press next on the first window that pops up, then you can choose were you want to store your project, click next. Choose RTL project and click next Add your VHDL file if you have one, if you don’t you can add the VGA-controller file just to make sure that everything works properly. Click next Click next Add the Nexys4_Master.xdc , this will connect all your I/O, LED, SW etc. Choose the xca100tcsg324-1 and click next and then finish. Vivado will open, now you can make your own VHDL code or you can follow instruction further if you want to use the VGA controller. If you want to make your own code you can skip the IP part and go to generate bitstream to see how you should implement your code on the FPGA. Adding IP’s, clk generator 25.2MHz and BRAM. Click IP Catalog and then Search for Clocking Wizard and enter and this will pop up, clocking option should look like this, remember to change the Component name! Change the output clock to 25.2MHz Port renaming: use names that explains your component, and click OK This should pop up, click generate Adding BRAM, search for bram and enter the Block Memory Generator and this should pop up. Remember component name Port A Options, write width = 12bits, write depth = 307200=(480*640 pixels projected on screen), then click OK and then generate as before and wait until the synthesis is done. GENERATE BITSTREAM: click generate bitstream If this pops up click yes If this message shows, just click ok, it only means that you have pins activated in your Nexys4_Master.xdc that are not in use. If later on want to change witch pins are active on your board you can configure this by entering the Nexys4_Master.xdc When completed, choose “Open Hardware Manager” and click ok At this point connect your NEXY4 board . In the left menu under “program and debug”, click open target => open new target Open new Hardware target will pop up, click next two times and this will show. Choose JTAG clock freq. 30 000 000, click next and then finish Now you can program your device, click program device and choose your FPGA Click program and your device is ready to go. [[Category:Mikroelektronikk]] 963c2abefc93070b09f4d8d9d19481c8fd420ba4 2222 2221 2016-03-02T22:16:08Z Nas005 92 /* Introkusjon */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== * [[Install]] To download Vivado for free you must first create an account. By following this link [http://www.xilinx.com/support/download.html/ Xilinx web page] you will enter Xilinx download page. For this tutorial we will be using the 2015.4 version. To download for Windows Vivado HLx 2015.4 Web Install for Windows with SDK (EXE - 49.32 MB) For linux Vivado HLx 2015.4 Web Install for Linux with SDK (BIN - 76.98 MB) Run the installer and this will show, press next [[File:1.png]] Type your user name and password and press next [[File:2.png]] Agree to everything!!! Or else?!?! [[File:3.png]] Choose Vivado HL WebPACK [[File:4.png]] Make sure the Software Development Kit, Artix-7, Install Cable Drivers, and Acquire or Manage a License Key are all checked and click next. The DocNav file is not necessary but it allows you to • Find answers to your questions quickly through the integrated search • Manage documents on your desktop through the Download Manager • Always ensures you are reading the latest version of documentation Detailed information about using the tool and its features can be found in the Online Help Menu which you can access after installation. [[File:5.png]] [[File:6.png]] [[File:7.png]] [[File:8.png]] Choose a directory to Install you Vivado product, make sure you have adequate free space on your hard drive. The final screen summarizes your selections. Click install, and the installer will begin downloading the files it needs to install Vivado. When it is done this screen will pop up. Click ok and the license manager should open up. If not open Vivado press Help=>obtain a license key and this window will open. Choose “Get Free SDK, Vivado WebPACK” and then press Connect Now. . You will be redirected to Xilinx home page were you will need to sign in with user name and password. After clicking “sign in”, press “next” and this site will pop up Choose “Vivado Design Suite: HL WebPACK, Node-Locked License……..” and press Generate Node-Locked License. Next this window will pop up. Click next and a new window will pop up, click next again and this will show Open your E-mail and download the attached Xilinx.lic file. When you go back to the license manager this will show, press cancel. Go to Load License in the left menu. You should see this Click Copy License and upload the Xilinx.lic file and you will get this message If you now press the view license status in the left menu, you should see this You can now close the license manager and Vivado is good to go. CREATING NEW PROJECT Press create new project Press next on the first window that pops up, then you can choose were you want to store your project, click next. Choose RTL project and click next Add your VHDL file if you have one, if you don’t you can add the VGA-controller file just to make sure that everything works properly. Click next Click next Add the Nexys4_Master.xdc , this will connect all your I/O, LED, SW etc. Choose the xca100tcsg324-1 and click next and then finish. Vivado will open, now you can make your own VHDL code or you can follow instruction further if you want to use the VGA controller. If you want to make your own code you can skip the IP part and go to generate bitstream to see how you should implement your code on the FPGA. Adding IP’s, clk generator 25.2MHz and BRAM. Click IP Catalog and then Search for Clocking Wizard and enter and this will pop up, clocking option should look like this, remember to change the Component name! Change the output clock to 25.2MHz Port renaming: use names that explains your component, and click OK This should pop up, click generate Adding BRAM, search for bram and enter the Block Memory Generator and this should pop up. Remember component name Port A Options, write width = 12bits, write depth = 307200=(480*640 pixels projected on screen), then click OK and then generate as before and wait until the synthesis is done. GENERATE BITSTREAM: click generate bitstream If this pops up click yes If this message shows, just click ok, it only means that you have pins activated in your Nexys4_Master.xdc that are not in use. If later on want to change witch pins are active on your board you can configure this by entering the Nexys4_Master.xdc When completed, choose “Open Hardware Manager” and click ok At this point connect your NEXY4 board . In the left menu under “program and debug”, click open target => open new target Open new Hardware target will pop up, click next two times and this will show. Choose JTAG clock freq. 30 000 000, click next and then finish Now you can program your device, click program device and choose your FPGA Click program and your device is ready to go. [[Category:Mikroelektronikk]] 96a86455df8155ef4ea2173c981425a7bb701986 2224 2222 2016-03-02T22:17:54Z Nas005 92 /* Vivado 2015.4 Install with free licens */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Vivado 2015.4 Install with free licens ==== * [[Install]] [[Category:Mikroelektronikk]] d0635788b79302b6f0c77768ef36f4590f8e98ec 2225 2224 2016-03-02T22:32:08Z Nas005 92 /* Vivado 2015.4 Install with free licens */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] === Øvingsoppgaver === [[Øvingsoppgaver PHYS321]] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Using Vivado ==== * [[Install Vivado 2015.4 with free licens]] * [[VGA controller VHDL code]] * [[Nexys4_Master.xdc]] * [[Using the VGA controller with block ram generator and clock wizard]] [[Category:Mikroelektronikk]] 900f1504eb22b88ed73e2b8d4ba62839bf03a96d File:1.PNG 6 493 2210 2016-03-02T21:56:27Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:1.png 6 484 2211 2150 2016-03-02T21:58:40Z Nas005 92 Nas005 uploaded a new version of [[File:1.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2213 2211 2016-03-02T22:09:12Z Nas005 92 Nas005 uploaded a new version of [[File:1.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2226 2213 2016-03-02T22:34:47Z Nas005 92 Nas005 uploaded a new version of [[File:1.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:2.png 6 494 2212 2016-03-02T22:06:05Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2214 2212 2016-03-02T22:09:13Z Nas005 92 Nas005 uploaded a new version of [[File:2.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2227 2214 2016-03-02T22:34:47Z Nas005 92 Nas005 uploaded a new version of [[File:2.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:3.png 6 495 2215 2016-03-02T22:09:14Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2228 2215 2016-03-02T22:34:48Z Nas005 92 Nas005 uploaded a new version of [[File:3.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:4.png 6 496 2216 2016-03-02T22:09:14Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2229 2216 2016-03-02T22:34:49Z Nas005 92 Nas005 uploaded a new version of [[File:4.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:5.png 6 497 2217 2016-03-02T22:09:14Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:6.png 6 498 2218 2016-03-02T22:09:15Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:7.png 6 499 2219 2016-03-02T22:09:15Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:8.png 6 500 2220 2016-03-02T22:09:16Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Install 0 501 2223 2016-03-02T22:16:54Z Nas005 92 Created page with "To download Vivado for free you must first create an account. By following this link Xilinx web page you will enter Xilinx download page. For this tutorial we will be using th..." wikitext text/x-wiki To download Vivado for free you must first create an account. By following this link Xilinx web page you will enter Xilinx download page. For this tutorial we will be using the 2015.4 version. To download for Windows Vivado HLx 2015.4 Web Install for Windows with SDK (EXE - 49.32 MB) For linux Vivado HLx 2015.4 Web Install for Linux with SDK (BIN - 76.98 MB) Run the installer and this will show, press next 1.png Type your user name and password and press next 2.png Agree to everything!!! Or else?!?! 3.png Choose Vivado HL WebPACK 4.png Make sure the Software Development Kit, Artix-7, Install Cable Drivers, and Acquire or Manage a License Key are all checked and click next. The DocNav file is not necessary but it allows you to • Find answers to your questions quickly through the integrated search • Manage documents on your desktop through the Download Manager • Always ensures you are reading the latest version of documentation Detailed information about using the tool and its features can be found in the Online Help Menu which you can access after installation. 5.png 6.png 7.png 8.png Choose a directory to Install you Vivado product, make sure you have adequate free space on your hard drive. The final screen summarizes your selections. Click install, and the installer will begin downloading the files it needs to install Vivado. When it is done this screen will pop up. Click ok and the license manager should open up. If not open Vivado press Help=>obtain a license key and this window will open. Choose “Get Free SDK, Vivado WebPACK” and then press Connect Now. . You will be redirected to Xilinx home page were you will need to sign in with user name and password. After clicking “sign in”, press “next” and this site will pop up Choose “Vivado Design Suite: HL WebPACK, Node-Locked License……..” and press Generate Node-Locked License. Next this window will pop up. Click next and a new window will pop up, click next again and this will show Open your E-mail and download the attached Xilinx.lic file. When you go back to the license manager this will show, press cancel. Go to Load License in the left menu. You should see this Click Copy License and upload the Xilinx.lic file and you will get this message If you now press the view license status in the left menu, you should see this You can now close the license manager and Vivado is good to go. CREATING NEW PROJECT Press create new project Press next on the first window that pops up, then you can choose were you want to store your project, click next. Choose RTL project and click next Add your VHDL file if you have one, if you don’t you can add the VGA-controller file just to make sure that everything works properly. Click next Click next Add the Nexys4_Master.xdc , this will connect all your I/O, LED, SW etc. Choose the xca100tcsg324-1 and click next and then finish. Vivado will open, now you can make your own VHDL code or you can follow instruction further if you want to use the VGA controller. If you want to make your own code you can skip the IP part and go to generate bitstream to see how you should implement your code on the FPGA. Adding IP’s, clk generator 25.2MHz and BRAM. Click IP Catalog and then Search for Clocking Wizard and enter and this will pop up, clocking option should look like this, remember to change the Component name! Change the output clock to 25.2MHz Port renaming: use names that explains your component, and click OK This should pop up, click generate Adding BRAM, search for bram and enter the Block Memory Generator and this should pop up. Remember component name Port A Options, write width = 12bits, write depth = 307200=(480*640 pixels projected on screen), then click OK and then generate as before and wait until the synthesis is done. GENERATE BITSTREAM: click generate bitstream If this pops up click yes If this message shows, just click ok, it only means that you have pins activated in your Nexys4_Master.xdc that are not in use. If later on want to change witch pins are active on your board you can configure this by entering the Nexys4_Master.xdc When completed, choose “Open Hardware Manager” and click ok At this point connect your NEXY4 board . In the left menu under “program and debug”, click open target => open new target Open new Hardware target will pop up, click next two times and this will show. Choose JTAG clock freq. 30 000 000, click next and then finish Now you can program your device, click program device and choose your FPGA Click program and your device is ready to go. 24f663b5c3afb3256acde87a76e280b622bd41c6 File:5.png 6 497 2230 2217 2016-03-02T22:34:50Z Nas005 92 Nas005 uploaded a new version of [[File:5.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:6.png 6 498 2231 2218 2016-03-02T22:34:51Z Nas005 92 Nas005 uploaded a new version of [[File:6.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:7.png 6 499 2232 2219 2016-03-02T22:34:52Z Nas005 92 Nas005 uploaded a new version of [[File:7.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:8.png 6 500 2233 2220 2016-03-02T22:34:52Z Nas005 92 Nas005 uploaded a new version of [[File:8.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:9.png 6 502 2234 2016-03-02T22:34:53Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:10.png 6 503 2235 2016-03-02T22:34:53Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:11.png 6 504 2236 2016-03-02T22:34:53Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:12.png 6 505 2237 2016-03-02T22:34:54Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:13.png 6 506 2238 2016-03-02T22:34:54Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:14.png 6 507 2239 2016-03-02T22:34:54Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:15.png 6 508 2240 2016-03-02T22:34:54Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Install Vivado 2015.4 with free licens 0 509 2241 2016-03-02T22:39:08Z Nas005 92 Created page with "To download Vivado for free you must first create an account. By following this link [http://www.xilinx.com/support/download.html/ Xilinx web page] you will enter Xilinx dow..." wikitext text/x-wiki To download Vivado for free you must first create an account. By following this link [http://www.xilinx.com/support/download.html/ Xilinx web page] you will enter Xilinx download page. For this tutorial we will be using the 2015.4 version. To download for Windows Vivado HLx 2015.4 Web Install for Windows with SDK (EXE - 49.32 MB) For linux Vivado HLx 2015.4 Web Install for Linux with SDK (BIN - 76.98 MB) Run the installer and this will show, press next [[File:1.png]] Type your user name and password and press next [[File:2.png]] Agree to everything!!! Or else?!?! [[File:3.png]] Choose Vivado HL WebPACK [[File:4.png]] Make sure the Software Development Kit, Artix-7, Install Cable Drivers, and Acquire or Manage a License Key are all checked and click next. The DocNav file is not necessary but it allows you to • Find answers to your questions quickly through the integrated search • Manage documents on your desktop through the Download Manager • Always ensures you are reading the latest version of documentation Detailed information about using the tool and its features can be found in the Online Help Menu which you can access after installation. [[File:5.png]] [[File:6.png]] [[File:7.png]] [[File:8.png]] [[File:9.png]] [[File:10.png]] [[File:11.png]] [[File:12.png]] [[File:13.png]] [[File:14.png]] [[File:15.png]] Choose a directory to Install you Vivado product, make sure you have adequate free space on your hard drive. The final screen summarizes your selections. Click install, and the installer will begin downloading the files it needs to install Vivado. When it is done this screen will pop up. Click ok and the license manager should open up. If not open Vivado press Help=>obtain a license key and this window will open. Choose “Get Free SDK, Vivado WebPACK” and then press Connect Now. . You will be redirected to Xilinx home page were you will need to sign in with user name and password. After clicking “sign in”, press “next” and this site will pop up Choose “Vivado Design Suite: HL WebPACK, Node-Locked License……..” and press Generate Node-Locked License. Next this window will pop up. Click next and a new window will pop up, click next again and this will show Open your E-mail and download the attached Xilinx.lic file. When you go back to the license manager this will show, press cancel. Go to Load License in the left menu. You should see this Click Copy License and upload the Xilinx.lic file and you will get this message If you now press the view license status in the left menu, you should see this You can now close the license manager and Vivado is good to go. 34d78c50735fec880ab0ed71a1b4588cf5c9453c 2242 2241 2016-03-02T22:48:07Z Nas005 92 wikitext text/x-wiki To download Vivado for free you must first create an account. By following this link [http://www.xilinx.com/support/download.html/ Xilinx web page] you will enter Xilinx download page. For this tutorial we will be using the 2015.4 version. To download for Windows Vivado HLx 2015.4 Web Install for Windows with SDK (EXE - 49.32 MB) For linux Vivado HLx 2015.4 Web Install for Linux with SDK (BIN - 76.98 MB) Run the installer and this will show, press next [[File:1.png]] Type your user name and password and press next [[File:2.png]] Agree to everything!!! Or else?!?! [[File:3.png]] Choose Vivado HL WebPACK [[File:4.png]] Make sure the Software Development Kit, Artix-7, Install Cable Drivers, and Acquire or Manage a License Key are all checked and click next. The DocNav file is not necessary but it allows you to * Find answers to your questions quickly through the integrated search * Manage documents on your desktop through the Download Manager * Always ensures you are reading the latest version of documentation Detailed information about using the tool and its features can be found in the Online Help Menu which you can access after installation. [[File:5.png]] Choose a directory to Install you Vivado product, make sure you have adequate free space on your hard drive. [[File:6.png]] The final screen summarizes your selections. Click install, and the installer will begin downloading the files it needs to install Vivado. When it is done this screen will pop up. [[File:7.png]] Click ok and the license manager should open up. If not open Vivado press Help=>obtain a license key and this window will open. Choose “Get Free SDK, Vivado WebPACK” and then press Connect Now. [[File:8.png]] You will be redirected to Xilinx home page were you will need to sign in with user name and password. After clicking “sign in”, press “next” and this site will pop up [[File:9.png]] Choose “Vivado Design Suite: HL WebPACK, Node-Locked License……..” and press Generate Node-Locked License. Next this window will pop up. [[File:10.png]] Click next and a new window will pop up, click next again and this will show [[File:11.png]] Open your E-mail and download the attached Xilinx.lic file. When you go back to the license manager this will show, press cancel. [[File:12.png]] Go to Load License in the left menu. You should see this [[File:13.png]] Click Copy License and upload the Xilinx.lic file and you will get this message [[File:14.png]] If you now press the view license status in the left menu, you should see this [[File:15.png]] You can now close the license manager and Vivado is good to go. bcc2de3f277cbb4bd5cc683b81e96f285bba0d92 VGA controller VHDL code 0 510 2243 2016-03-02T22:51:24Z Nas005 92 Created page with "library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Vga is Port ( clk_i : in STD_LOGIC; sw_i :..." wikitext text/x-wiki library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Vga is Port ( clk_i : in STD_LOGIC; sw_i : in STD_LOGIC_VECTOR (15 downto 0); -- (11 downto 8) is RED, (7 downto 4) is GREEN, (3 downto 0) is BLUE -- Writing directly to RAM and from RAM to VGA interface. -- Writing when sw_i(15) is high -- VGA Output Signals vga_hs_o : out STD_LOGIC; -- Horizontal sync puls to VGA interface vga_vs_o : out STD_LOGIC; -- Vertical sync puls to VGA interface vga_red_o : out STD_LOGIC_VECTOR (3 downto 0); -- Red to VGA interface vga_green_o : out STD_LOGIC_VECTOR (3 downto 0); -- Green to VGA interface vga_blue_o : out STD_LOGIC_VECTOR (3 downto 0) -- Blue to VGA interface ); end Vga; architecture Behavioral of Vga is ------------------------------------------------------------------------- -- Component Declarations ------------------------------------------------------------------------- -- 25.2MHz Clock COMPONENT clk_wiz_25_2MHz PORT ( clk_in_100MHz: in STD_LOGIC; clk_out_25_2: out STD_LOGIC; reset : in STD_LOGIC; locked : out STD_LOGIC ); END COMPONENT; -- Ram block for pixels COMPONENT PIX_RAM PORT ( clka : IN STD_LOGIC; ena : IN STD_LOGIC; wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0); addra : IN STD_LOGIC_VECTOR(18 DOWNTO 0); dina : IN STD_LOGIC_VECTOR(11 DOWNTO 0); douta : OUT STD_LOGIC_VECTOR(11 DOWNTO 0) ); END COMPONENT; ------------------------------------------------------------- -- Constants for VGA Resolutions ------------------------------------------------------------- ------640x480 60Hz------- constant WIDTH : natural := 640; constant HEIGHT : natural := 480; constant H_FP : natural := 16; --H front porch width (pixels) constant H_PW : natural := 96; --H sync pulse width (pixels) constant H_TOT : natural := 800; --H total period (pixels) constant V_FP : natural := 10; --V front porch width (lines) constant V_PW : natural := 2; --V sync pulse width (lines) constant V_TOT : natural := 525; --V total period (lines) ------------------------------------------------------------------------- -- VGA signals: Counters, Sync, Red, Gree, Blue ------------------------------------------------------------------------- -- Activates the screen when it is in the frame area signal SCREEN_ON : std_logic; -- Horizontal and Vertical counters signal h_count : std_logic_vector(11 downto 0) := (others =>'0'); signal v_count : std_logic_vector(11 downto 0) := (others =>'0'); -- signal for the VGA interface signal vga_red : std_logic_vector(3 downto 0); signal vga_blue : std_logic_vector(3 downto 0); signal vga_green : std_logic_vector(3 downto 0); ------------------------------------------------------------------------- -- CLOCK signals ------------------------------------------------------------------------- signal pxl_clk: std_logic; -- pxl_clk is 25.2MHz signal reset: std_logic := '0'; ------------------------------------------------------------------------- -- RAM signals ------------------------------------------------------------------------- signal data_out : std_logic_vector(11 downto 0) := (others =>'0'); signal data_inn : std_logic_vector(11 downto 0) := (others =>'0'); signal address : std_logic_vector(18 downto 0) := (others =>'0'); signal write : std_logic_vector(0 downto 0) ; begin --------------------------- -- PORT MAPS --------------------------- -- PIXELGENERATOR - pxl_clk=25.2MHz PIXELGENERATOR : clk_wiz_25_2MHz PORT MAP (--clock inn clk_in_100MHz => clk_i, --clock out clk_out_25_2 => pxl_clk, --reset active high reset => reset, --status and controll signals locked => open ); -- RAM RAM : PIX_RAM PORT MAP ( clka => clk_i, ena => '1', wea => write, addra => address, dina => data_inn, douta => data_out ); ----------------------------------------------------------------- -- Generate Horizontal, Vertical counters and the Sync signals ----------------------------------------------------------------- -- Horizontal counter process (pxl_clk) begin if (rising_edge(pxl_clk)) then if (h_count = (H_TOT - 1)) then h_count <= (others =>'0'); else h_count <= h_count + 1; end if; end if; end process; -- Vertical counter process (pxl_clk) begin if (rising_edge(pxl_clk)) then if ((h_count = (H_TOT - 1)) and (v_count = (V_TOT - 1))) then v_count <= (others =>'0'); elsif (h_count = (H_TOT - 1)) then v_count <= v_count + 1; end if; end if; end process; -- Horizontal sync process (pxl_clk) begin if (rising_edge(pxl_clk)) then if (h_count >= (H_FP + WIDTH - 1)) and (h_count < (H_FP + WIDTH + H_PW - 1)) then vga_hs_o <= '1'; else vga_hs_o <= '0'; end if; end if; end process; -- Vertical sync process (pxl_clk) begin if (rising_edge(pxl_clk)) then if (v_count >= (V_FP + HEIGHT - 1)) and (v_count < (V_FP + HEIGHT + V_PW - 1)) then vga_vs_o <= '1'; else vga_vs_o <= '0'; end if; end if; end process; ------------------------------------------------------- -- RAM interface ------------------------------------------------------- -- Synchronizing reading and writing of adresses with the VGA interface process (pxl_clk) begin if (rising_edge(pxl_clk)) then if h_count < WIDTH and v_count < HEIGHT then address <= address + 1; else address <= (others =>'0'); end if; end if; end process; -------------------- -- SCREEN ON -------------------- -- screening signal SCREEN_ON <= '1' when h_count < WIDTH and v_count < HEIGHT else '0'; ------------------------------------------------------------ -- Turn Off VGA RBG Signals if outside of the active screen -- Make a 4-bit AND logic with the R, G and B signals ------------------------------------------------------------ vga_red_o <= (SCREEN_ON & SCREEN_ON & SCREEN_ON & SCREEN_ON) and vga_red; vga_green_o <= (SCREEN_ON & SCREEN_ON & SCREEN_ON & SCREEN_ON) and vga_green; vga_blue_o <= (SCREEN_ON & SCREEN_ON & SCREEN_ON & SCREEN_ON) and vga_blue; -------------------- -- Rerouting signals -------------------- vga_red <= data_out(11 downto 8); vga_green <= data_out(7 downto 4); vga_blue <= data_out(3 downto 0); data_inn <= sw_i(11 downto 0); -- (11 downto 8) is RED, (7 downto 4) is GREEN, (3 downto 0) is BLUE write <= sw_i(15 downto 15); -- Activ high when writing to BRAM end Behavioral; 60f6f9b053c84eba33c67d388e9429053c91ed83 2245 2243 2016-03-02T22:57:24Z Nas005 92 Replaced content with "[[:File:vga.txt]]" wikitext text/x-wiki [[:File:vga.txt]] 544742a84fc91c56923a0c855aff6831ea175bc5 File:Vga.txt 6 511 2244 2016-03-02T22:56:46Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Nexys4 Master.txt 6 512 2246 2016-03-02T23:04:26Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Nexys4 Master.xdc 0 513 2247 2016-03-02T23:04:36Z Nas005 92 Created page with "[[:File:Nexys4_Master.txt]]" wikitext text/x-wiki [[:File:Nexys4_Master.txt]] e7fd657d6f3cbde0e24e18b91cefca086fec299a File:16.png 6 514 2248 2016-03-02T23:06:59Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:17.png 6 515 2249 2016-03-02T23:06:59Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:18.png 6 516 2250 2016-03-02T23:07:00Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:19.png 6 517 2251 2016-03-02T23:07:00Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:20.png 6 518 2252 2016-03-02T23:07:00Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:21.png 6 519 2253 2016-03-02T23:07:01Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:22.png 6 520 2254 2016-03-02T23:07:02Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:23.png 6 521 2255 2016-03-02T23:07:02Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:24.png 6 522 2256 2016-03-02T23:07:02Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:25.png 6 523 2257 2016-03-02T23:07:02Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:26.png 6 524 2258 2016-03-02T23:07:03Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:27.png 6 525 2259 2016-03-02T23:07:03Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:28.png 6 526 2260 2016-03-02T23:07:03Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:29.png 6 527 2261 2016-03-02T23:07:03Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:30.png 6 528 2262 2016-03-02T23:07:04Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:31.png 6 529 2263 2016-03-02T23:07:04Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:32.png 6 530 2264 2016-03-02T23:07:04Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:33.png 6 531 2265 2016-03-02T23:07:04Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:34.png 6 532 2266 2016-03-02T23:07:05Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:35.png 6 533 2267 2016-03-02T23:07:05Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:36.png 6 534 2268 2016-03-02T23:07:05Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:37.png 6 535 2269 2016-03-02T23:07:05Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:38.png 6 536 2270 2016-03-02T23:07:06Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:39.png 6 537 2271 2016-03-02T23:07:06Z Nas005 92 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Using the VGA controller with block ram generator and clock wizard 0 538 2272 2016-03-02T23:21:55Z Nas005 92 Created page with "If you want to use the vga controller remember to * copy-paste the vga.txt file and save it as vga.vhd * copy-paste the Nexys4_Master.txt file and save it as Nexys4_Master.x..." wikitext text/x-wiki If you want to use the vga controller remember to * copy-paste the vga.txt file and save it as vga.vhd * copy-paste the Nexys4_Master.txt file and save it as Nexys4_Master.xdc CREATING NEW PROJECT Press create new project [[File:16.png|400px]] Press next on the first window that pops up, then you can choose were you want to store your project, click next. [[File:17.png|400px]] Choose RTL project and click next [[File:18.png|400px]] Add your VHDL file if you have one, if you don’t you can add the VGA-controller file just to make sure that everything works properly. Click next [[File:19.png|400px]] Click next [[File:20.png|400px]] Add the Nexys4_Master.xdc , this will connect all your I/O, LED, SW etc. [[File:21.png|400px]] Choose the xca100tcsg324-1 and click next and then finish. [[File:22.png|400px]] Vivado will open, now you can make your own VHDL code or you can follow instruction further if you want to use the VGA controller. If you want to make your own code you can skip the IP part and go to generate bitstream to see how you should implement your code on the FPGA. [[File:23.png|400px]] Adding IP’s, clk generator 25.2MHz and BRAM. Click IP Catalog and then [[File:24.png|400px]] Search for Clocking Wizard and enter and this will pop up, clocking option should look like this, remember to change the Component name! [[File:25.png|400px]] Change the output clock to 25.2MHz [[File:26.png|400px]] Port renaming: use names that explains your component, and click OK [[File:27.png|400px]] This should pop up, click generate [[File:28.png|400px]] Adding BRAM, search for bram and enter the Block Memory Generator and this should pop up. Remember component name [[File:29.png|400px]] Port A Options, write width = 12bits, write depth = 307200=(480*640 pixels projected on screen), then click OK and then generate as before and wait until the synthesis is done. [[File:30.png|400px]] GENERATE BITSTREAM: click generate bitstream [[File:31.png|400px]] If this pops up click yes [[File:32.png|400px]] If this message shows, just click ok, it only means that you have pins activated in your Nexys4_Master.xdc that are not in use. [[File:33.png|400px]] If later on want to change witch pins are active on your board you can configure this by entering the Nexys4_Master.xdc [[File:34.png|400px]] When completed, choose “Open Hardware Manager” and click ok [[File:35.png|400px]] At this point connect your NEXY4 board . In the left menu under “program and debug”, click open target => open new target [[File:36.png|400px]] Open new Hardware target will pop up, click next two times and this will show. Choose JTAG clock freq. 30 000 000, click next and then finish [[File:37.png|400px]] Now you can program your device, click program device and choose your FPGA [[File:38.png|400px]] Click program and your device is ready to go. [[File:39.png|400px]] ceed3e5aee0cfc1d9bb6ae5d06de887f3742fe0e 2273 2272 2016-03-02T23:33:10Z Nas005 92 wikitext text/x-wiki If you want to use the vga controller remember to * copy-paste the vga.txt file and save it as vga.vhd * copy-paste the Nexys4_Master.txt file and save it as Nexys4_Master.xdc The vga controller is using a BRAM block to store pixel values. Each pixel has 12-bits and number of pixels projected to the screen is 480x640=307200 * sw_i(15) -- active high, write enable * sw_i(11 downto 0) -- 12-bits for colour changing the screen CREATING NEW PROJECT Press create new project [[File:16.png|400px]] Press next on the first window that pops up, then you can choose were you want to store your project, click next. [[File:17.png|400px]] Choose RTL project and click next [[File:18.png|400px]] Add your VHDL file if you have one, if you don’t you can add the VGA-controller file just to make sure that everything works properly. Click next [[File:19.png|400px]] Click next [[File:20.png|400px]] Add the Nexys4_Master.xdc , this will connect all your I/O, LED, SW etc. [[File:21.png|400px]] Choose the xca100tcsg324-1 and click next and then finish. [[File:22.png|400px]] Vivado will open, now you can make your own VHDL code or you can follow instruction further if you want to use the VGA controller. If you want to make your own code you can skip the IP part and go to generate bitstream to see how you should implement your code on the FPGA. [[File:23.png|400px]] Adding IP’s, clk generator 25.2MHz and BRAM. Click IP Catalog and then [[File:24.png|400px]] Search for Clocking Wizard and enter and this will pop up, clocking option should look like this, remember to change the Component name! [[File:25.png|400px]] Change the output clock to 25.2MHz [[File:26.png|400px]] Port renaming: use names that explains your component, and click OK [[File:27.png|400px]] This should pop up, click generate [[File:28.png|400px]] Adding BRAM, search for bram and enter the Block Memory Generator and this should pop up. Remember component name [[File:29.png|400px]] Port A Options, write width = 12bits, write depth = 307200=(480*640 pixels projected on screen), then click OK and then generate as before and wait until the synthesis is done. [[File:30.png|400px]] GENERATE BITSTREAM: click generate bitstream [[File:31.png|400px]] If this pops up click yes [[File:32.png|400px]] If this message shows, just click ok, it only means that you have pins activated in your Nexys4_Master.xdc that are not in use. [[File:33.png|400px]] If later on want to change witch pins are active on your board you can configure this by entering the Nexys4_Master.xdc [[File:34.png|400px]] When completed, choose “Open Hardware Manager” and click ok [[File:35.png|400px]] At this point connect your NEXY4 board . In the left menu under “program and debug”, click open target => open new target [[File:36.png|400px]] Open new Hardware target will pop up, click next two times and this will show. Choose JTAG clock freq. 30 000 000, click next and then finish [[File:37.png|400px]] Now you can program your device, click program device and choose your FPGA [[File:38.png|400px]] Click program and your device is ready to go. [[File:39.png|400px]] 6a03f80a7c342fc3a0c03d2c8e78b2e6dea74148 Modelsim/Questa 0 33 2274 2097 2016-03-24T11:21:00Z Ogr043 86 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cyclonev /prog/altera/vhdl_libs/cyclonev vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] [[Synthese av VHDL - Oppdatert]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] [http://www.ashenden.com.au/ Ashenden Designs] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] [http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [http://bitvis.no/products/bitvis-utility-library/ Bitvis utility library] [[Category:Mikroelektronikk]] 824c2df0bebd952d059dd64795d2539d35e58ce5 Synthese av VHDL - Oppdatert 0 539 2275 2016-03-24T12:26:03Z Ogr043 86 Created page with "===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter..." wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneV-chip. Vi valgte 5CSEMA5F31C6. Det er chipen på Terasic DE1-SoC. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. ==Modelsim== ==Simulering med timing== ==Konklusjon== ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> 53013bcc0dfb871dc27f5e1b7ecc7a1e3d2bb3e3 2276 2275 2016-03-24T12:56:28Z Ogr043 86 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneIV-chip. Vi valgte EP4CE115F29. Det er chipen på Terasic DE2-115. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. I simulation/modelsim/ finner vi nå add_sub_alu.vho og add_sub_alu_vhd.sdo. Vho-filen(VHDL Output File) er filen som inneholder nå det opprinnelige designet, men også mange nye moduler med cycloneive-prefix. Disse entitetene beskriver ressurser på den fysiske FPGA-chipen. Sdo-filen(Standard Delay Format Output File) inneholder detaljer om delay fra hver modul på chippen. ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila for designet add_sub_alu.vhd og testbenken alu_tb.vhd. Så legg vi til fila som Quartus generte i prosjektdir til simulation/modelsim/add_sub_alu.vho. Den Quartus-genererte filen vil ha samme entitetsnavn som den opprinnelige, og vil derfor ikke kunne simuleres samtid. Vi endrer derfor den genererte filen til å ha entiteten 'add_sub_alu_synth' og architecturen 'structure' (i vårt tilfelle endret den seg til structure automatisk). Vi kan nå kompilere filene våre: ==Simulering med timing== ==Konklusjon== ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> 63e29976b99582bfe0c25ec30f6a2bbb85451ff9 2277 2276 2016-03-24T13:16:24Z Ogr043 86 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneIV-chip. Vi valgte EP4CE115F29. Det er chipen på Terasic DE2-115. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. I simulation/modelsim/ finner vi nå add_sub_alu.vho og add_sub_alu_vhd.sdo. Vho-filen(VHDL Output File) er filen som inneholder nå det opprinnelige designet, men også mange nye moduler med cycloneive-prefix. Disse entitetene beskriver ressurser på den fysiske FPGA-chipen. Sdo-filen(Standard Delay Format Output File) inneholder detaljer om delay fra hver modul på chippen. ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila for designet add_sub_alu.vhd og testbenken alu_tb.vhd. Så legg vi til fila som Quartus generte i prosjektdir til simulation/modelsim/add_sub_alu.vho. Den Quartus-genererte filen vil ha samme entitetsnavn som den opprinnelige, og vil derfor ikke kunne simuleres samtid. Vi endrer derfor den genererte filen til å ha entiteten 'add_sub_alu_synth' og architecturen 'structure' (i vårt tilfelle endret den seg til structure automatisk). Vi kan nå kompilere filene våre og deretter simulere testbenken. I testbenken vår ser vi at vi har kalt den syntiserte entiteten alu_synt. Dette skal vi bruke nå. Velg Start Simulation - deretter work og alu_tb. Se så på SDF-fanen. Legg til add_sub_alu_vhd.sdo generert av Quartus tidligere. Under apply to region må du skrive: /alu_tb/alu_synt Dette er altså området vi ønsker at sdo-filen skal gi informasjon om. Trykk så OK. add wave * ==Simulering med timing== ==Konklusjon== ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> 0cb18c15d2a92f8950402dea6e0aaf58fadd6079 2278 2277 2016-03-26T16:06:07Z Ogr043 86 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneIV-chip. Vi valgte EP4CE115F29. Det er chipen på Terasic DE2-115. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. I simulation/modelsim/ finner vi nå add_sub_alu.vho og add_sub_alu_vhd.sdo. Vho-filen(VHDL Output File) er filen som inneholder nå det opprinnelige designet, men også mange nye moduler med cycloneive-prefix. Disse entitetene beskriver ressurser på den fysiske FPGA-chipen. Sdo-filen(Standard Delay Format Output File) inneholder detaljer om delay fra hver modul på chippen. ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila for designet add_sub_alu.vhd og testbenken alu_tb.vhd. Så legg vi til fila som Quartus generte i prosjektdir til simulation/modelsim/add_sub_alu.vho. Den Quartus-genererte filen vil ha samme entitetsnavn som den opprinnelige, og vil derfor ikke kunne simuleres samtid. Vi endrer derfor den genererte filen til å ha entiteten 'add_sub_alu_synth' og architecturen 'structure' (i vårt tilfelle endret den seg til structure automatisk). Vi kan nå kompilere filene våre og deretter simulere testbenken. I testbenken vår ser vi at vi har kalt den syntiserte entiteten alu_synt. Dette skal vi bruke nå. ==Simulering med timing== Velg Start Simulation - deretter work og alu_tb. Se så på SDF-fanen. Legg til add_sub_alu_vhd.sdo generert av Quartus tidligere. Under apply to region må du skrive: /alu_tb/alu_synt Dette er altså området vi ønsker at sdo-filen skal gi informasjon om. Trykk så OK. add wave * run -all Vi kan nå sammenligne utsignalene for den usyntiserte og den syntiserte ALU-komponenten. ==Konklusjon== Vi ser at vi får masse feil før 50 ns. Dette skyldes at den opprinnelige komponenten ikke har definerte signaler før de første klokkeflankene, mens den syntiserte komponenten ikke kan ha udefinerte signaler. Senere får vi feil når signalene skifter. Dette skyldes at den syntiserte komponenten bruker lengre tid på å sende ut riktig signal, og vil også glitche mellom verdier før den stabiliserer seg på riktig verdi. ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> c2a4141398847fe2dab9e58d4f54c815875748e4 2279 2278 2016-03-26T16:41:11Z Ogr043 86 wikitext text/x-wiki Obs! Fra Quartus Prime Handbook: Gate-level timing simulation of an entire design can be slow and should be avoided. Gate-level timing simulation is supported only for the Stratix IV and Cyclone IV device families. Use TimeQuest static timing analysis rather than gate-level timing simulation. ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneIV-chip. Vi valgte EP4CE115F29. Det er chipen på Terasic DE2-115. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. I simulation/modelsim/ finner vi nå add_sub_alu.vho og add_sub_alu_vhd.sdo. Vho-filen(VHDL Output File) er filen som inneholder nå det opprinnelige designet, men også mange nye moduler med cycloneive-prefix. Disse entitetene beskriver ressurser på den fysiske FPGA-chipen. Sdo-filen(Standard Delay Format Output File) inneholder detaljer om delay fra hver modul på chippen. ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila for designet add_sub_alu.vhd og testbenken alu_tb.vhd. Så legg vi til fila som Quartus generte i prosjektdir til simulation/modelsim/add_sub_alu.vho. Den Quartus-genererte filen vil ha samme entitetsnavn som den opprinnelige, og vil derfor ikke kunne simuleres samtid. Vi endrer derfor den genererte filen til å ha entiteten 'add_sub_alu_synth' og architecturen 'structure' (i vårt tilfelle endret den seg til structure automatisk). Vi kan nå kompilere filene våre og deretter simulere testbenken. I testbenken vår ser vi at vi har kalt den syntiserte entiteten alu_synt. Dette skal vi bruke nå. ==Simulering med timing== Velg Start Simulation - deretter work og alu_tb. Se så på SDF-fanen. Legg til add_sub_alu_vhd.sdo generert av Quartus tidligere. Under apply to region må du skrive: /alu_tb/alu_synt Dette er altså området vi ønsker at sdo-filen skal gi informasjon om. Trykk så OK. add wave * run -all Vi kan nå sammenligne utsignalene for den usyntiserte og den syntiserte ALU-komponenten. ==Konklusjon== Vi ser at vi får masse feil før 50 ns. Dette skyldes at den opprinnelige komponenten ikke har definerte signaler før de første klokkeflankene, mens den syntiserte komponenten ikke kan ha udefinerte signaler. Senere får vi feil når signalene skifter. Dette skyldes at den syntiserte komponenten bruker lengre tid på å sende ut riktig signal, og vil også glitche mellom verdier før den stabiliserer seg på riktig verdi. ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> 685ce772065d5962949c8b330ce145bc848a13e7 Synthese av VHDL - Oppdatert 0 539 2280 2279 2016-03-26T16:41:23Z Ogr043 86 wikitext text/x-wiki Obs! Fra Quartus Prime Handbook: Gate-level timing simulation of an entire design can be slow and should be avoided. Gate-level timing simulation is supported only for the Stratix IV and Cyclone IV device families. Use TimeQuest static timing analysis rather than gate-level timing simulation. ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneIV-chip. Vi valgte EP4CE115F29. Det er chipen på Terasic DE2-115. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. I simulation/modelsim/ finner vi nå add_sub_alu.vho og add_sub_alu_vhd.sdo. Vho-filen(VHDL Output File) er filen som inneholder nå det opprinnelige designet, men også mange nye moduler med cycloneive-prefix. Disse entitetene beskriver ressurser på den fysiske FPGA-chipen. Sdo-filen(Standard Delay Format Output File) inneholder detaljer om delay fra hver modul på chippen. ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila for designet add_sub_alu.vhd og testbenken alu_tb.vhd. Så legg vi til fila som Quartus generte i prosjektdir til simulation/modelsim/add_sub_alu.vho. Den Quartus-genererte filen vil ha samme entitetsnavn som den opprinnelige, og vil derfor ikke kunne simuleres samtid. Vi endrer derfor den genererte filen til å ha entiteten 'add_sub_alu_synth' og architecturen 'structure' (i vårt tilfelle endret den seg til structure automatisk). Vi kan nå kompilere filene våre og deretter simulere testbenken. I testbenken vår ser vi at vi har kalt den syntiserte entiteten alu_synt. Dette skal vi bruke nå. ==Simulering med timing== Velg Start Simulation - deretter work og alu_tb. Se så på SDF-fanen. Legg til add_sub_alu_vhd.sdo generert av Quartus tidligere. Under apply to region må du skrive: /alu_tb/alu_synt Dette er altså området vi ønsker at sdo-filen skal gi informasjon om. Trykk så OK. add wave * run -all Vi kan nå sammenligne utsignalene for den usyntiserte og den syntiserte ALU-komponenten. ==Konklusjon== Vi ser at vi får masse feil før 50 ns. Dette skyldes at den opprinnelige komponenten ikke har definerte signaler før de første klokkeflankene, mens den syntiserte komponenten ikke kan ha udefinerte signaler. Senere får vi feil når signalene skifter. Dette skyldes at den syntiserte komponenten bruker lengre tid på å sende ut riktig signal, og vil også glitche mellom verdier før den stabiliserer seg på riktig verdi. ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> e116ee1ce8c632cf333f8bee4a0fb3e51b65667f Cadence Virtuoso overview 0 38 2281 2125 2016-04-12T08:06:54Z Ogr043 86 wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Get schematic ready for layout]] [[Layout XL and IHP SG13S]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[Category:Mikroelektronikk]] a5b4fc32412e11873a461a887882d19a8e256df2 2283 2281 2016-04-12T09:15:00Z Ogr043 86 wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[Category:Mikroelektronikk]] b7141a7db73cdc5d0a53cc51ad945d4f4ce3dbc0 2307 2283 2016-05-06T17:10:55Z Mer020 87 /* Helpful stuff */ wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] 363f9e5f66a2697461289d792300bf9b6ec9540f File:Ptap1.png 6 540 2282 2016-04-12T09:01:38Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Documentation.png 6 541 2284 2016-04-12T09:17:30Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Layout.png 6 542 2285 2016-04-12T09:31:51Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Layout2.png 6 543 2286 2016-04-12T09:31:51Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Gravity.png 6 544 2287 2016-04-12T09:43:10Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Grid.png 6 545 2288 2016-04-12T09:43:10Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Layout XL and IHP SG13S 0 546 2289 2016-04-12T09:43:36Z Ogr043 86 Created page with "= Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand..." wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] 3935448c905fe199e24683d42789990202eef32e 2294 2289 2016-04-12T10:14:43Z Ogr043 86 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|100px]] [[File:partial2.png|100px]] 6341655e512e962f6bb18a031ed3bc5bacb45f89 2295 2294 2016-04-12T10:15:03Z Ogr043 86 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] 6eabb666ae64a6e3725e10dc5625a703ac424f98 2298 2295 2016-04-12T10:21:16Z Ogr043 86 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] a81bf19a6d0d3e09fda97a66f96a40fe3d7a0eda 2301 2298 2016-04-12T11:05:14Z Ogr043 86 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Rule Set: Fill and Density. = LVS = Run LVS by pressing Assura -> Run LVS. ca07eb3dbe2268df50fc5ccd11828834d9aa32f2 2302 2301 2016-04-12T11:46:30Z Ogr043 86 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = Run LVS by pressing Assura -> Run LVS. e9cce627b5d1cf045f870b757e55d418c660f595 File:Result.png 6 547 2290 2016-04-12T09:59:58Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Pinplacement.png 6 548 2291 2016-04-12T10:06:18Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Partial.png 6 549 2292 2016-04-12T10:14:21Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Partial2.png 6 550 2293 2016-04-12T10:14:21Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:DRD.png 6 551 2296 2016-04-12T10:20:22Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:DRDbuttons.png 6 552 2297 2016-04-12T10:20:22Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Sram.png 6 553 2299 2016-04-12T10:43:28Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Drcok.png 6 554 2300 2016-04-12T10:47:15Z Ogr043 86 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Busy Box and related 0 3 2303 2050 2016-04-21T07:10:06Z Are033 82 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga2.bit busybox_fpga2.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 7bbdb75b30aae9b6f009af620fe3bffe8c1fba5f 2304 2303 2016-04-22T09:12:57Z Are033 82 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 96fb69318d614948cea4f0c94a1f366e837400b3 2309 2304 2016-05-09T09:43:39Z Are033 82 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): I counted D: Down, U: Up, L: Left. 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 1d5b7d553cada6ecaaf33731777c29e01784cdab 2310 2309 2016-05-09T11:00:12Z Are033 82 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): D: Down, U: Up, L: Left. 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] bbcad3449889e82e06047070d11bd97eadbe7b39 2311 2310 2016-05-09T12:41:10Z Are033 82 /* Logical address mapping to physical connectors on busy-box */ wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): D: Down, U: Up, L: Left. [[File:Bb mapping.jpg|framed|center|bb_mapping.jpg]] 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] a8a21218c8ed69bda0afe2f847f9f072d90a6f1c 2313 2311 2016-05-09T12:45:18Z Are033 82 /* Logical address mapping to physical connectors on busy-box */ wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): D: Down, U: Up, L: Left. 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] ae60d53c533556ed0a5d422ec1b73d2617dcd406 2314 2313 2016-05-09T12:49:30Z Are033 82 /* Logical address mapping to physical connectors on busy-box */ wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): D: Down, U: Up, L: Left. [[File:Bb_mapping.jpg]] 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] a95e66132b7b5284a116b30d0f2ea1cbe3a107b4 2321 2314 2016-05-19T18:02:31Z Are033 82 /* Using Trigger Receiver Module v 1.9 (30.06.2015) */ wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting rom. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Register map is set according to RCU2:'''Old trigger address map is not valid'''. New address map is found here[[:File:TTCrx_receiver_v2.0.2.pdf]]. * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): D: Down, U: Up, L: Left. [[File:Bb_mapping.jpg]] 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 41c4b81c7b6a7ebc72dc40c3b9b96acae0a67f2a 2326 2321 2016-06-07T07:05:13Z Are033 82 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting room. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[http://web.ift.uib.no/kjekscgi-bin/viewcvs.cgi/vhdlcvs/trigger_receiver/ Trigger Receiver CVS] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. Alternatively fpga2 can be prgrammed with 'dummy.bit'. ==== Compiled BusyBox Firmware Versions ==== =====Revision 31===== ;:* Using Trigger Receiver Module v.1.3 ;:* Now handles orphan L2 Accept triggers by looking at the payload bit in the event info. ;:;Download ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga1.bit busybox_fpga1.bit] ;::*[http://web.ift.uib.no/firmware/BusyBox/revision31/busybox_fpga2.bit busybox_fpga2.bit] ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Register map is set according to RCU2:'''Old trigger address map is not valid'''. New address map is found here[[:File:TTCrx_receiver_v2.0.2.pdf]]. * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): D: Down, U: Up, L: Left. [[File:Bb_mapping.jpg]] 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] =====Revision 66===== ======Using Trigger Receiver Module v 2.1 (06.06.2016)====== [https://twiki.cern.ch/twiki/bin/viewauth/ALICE/TPC_RCU2_TTC_Module Click for Trigger Receiver updates] *This release only updates the trigger receiver module and firmware is tested to receive all valid trigger sequences. *Please perform a complete integration (DAQ+RCU+BusyBox) test in lab before using it at experiment. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision66/busybox_fpga1.bit busybox_fpga1.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] bf0c726b0e207d66d671149811103c0863647c84 2327 2326 2016-06-07T11:35:47Z Nfyku 4 Updated to version 66 wikitext text/x-wiki ==Contact info== The Busy Box Hardware and Firmware is developed at the Department of Physics and Technology, University of Bergen. For questions and enquiries please contact [http://www.uib.no/personer/Attiq.Rehman Attiq Rehman] and [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland]. == Overview == [[Image:Block_busybox.jpg‎|thumb|791px|center|Block diagram BusyBox]] <br><br> ALICE is one of four large detectors situated at the collision points in the Large Hadron Collider (LHC) at CERN. The BusyBox is used by four of ALICE’s sub-detectors: Time Projection Chamber (TPC), Photon Spectrometer (PHOS), Forward Multiplicity Detector (FMD) and Electromagnetic Calorimeter (EMCal) Triggers initiate data readout from ALICE’s sub-detectors and are received by the DCS board via an optical cable interface. The triggers and associated data are routed from the TTCrx ASIC on the DCS board to the BusyBox FPGA(s). Here, the L1a and Serial B line raw data is decoded by the Trigger Receiver firmware module. Every time a trigger sequence starts the Fee starts buffering data, i.e. a buffer in the Fee is used. A valid trigger sequence ends with an L2a trigger and the event data along with the event ID is sent to the D-RORCs. The purpose of BusyBox is to let the Central Trigger Processor (CTP) know when the Fee’s buffers are full by asserting a busy signal which prevents further issuing of triggers. The BusyBox and D-RORCs receives a unique event ID from the Fee after an event. After a valid trigger sequence ends the BusyBox will ask the D-RORCs if they have received the same event ID as the BusyBox did. If they do not reply with the same ID it means data has not been shipped from the Fee to the D-RORC, hence, the buffer in the Fee still holds event data. The Fee buffers can hold 4 or 8 events and the BusyBox keeps track of free buffers. The busy is asserted if the buffers are full. Interaction with the BusyBox is done through the DCS board, either via Ethernet or UART. The BusyBoxes are located in the DAQ counting room. == BusyBox Hardware overview == The BusyBox uses the Virtex-4 LX-40 FPGAs with the ff1148 package from Xilinx. Each device has 640 user programmable I/O pins that support LVDS 2.5 standard used to communicate with the D-RORCs. The Virtex-4 can run on clock speeds up to 500 MHz, store 18 kbits in 96 BRAM modules and has DCM to provide flexible clocking and synchronization. == BusyBox Hardware tests at UiB == In one of our labs at UiB we have a setup for testing new BusyBox firmware in hardware before releasing it. The setup features a full readout chain for one channel of the ALICE TPC.<br> ===== Components in LAB setup : ===== * Local Trigger Crate (LTU) * Readout Control Unit (RCU) with Front End Cards (FEC) * Local Data Concentrator (LDC) with 3 DAQ ReadOut Receiver Cards (DRORC) and date software. * BusyBox with 2 FPGAs but only 1U rack. See Also [[How to run the RCU - DRORC - Busybox setup]] == BusyBox Firmware == ====Busy Box Registers==== See [[Busy_Box_and_related/BusyBox Registers|BusyBox Registers]] for latest updated information on firmware registers. ==== Source Code Repositories ==== *[http://subversion.ift.uib.no/svn/busybox_firmware BusyBox SVN repository] *[https://gitlab.cern.ch/alice-tpc-rcu2/GIT-ALICE-RCU2/tree/ttc/RCU2/firmware/SF2/src/modules/ttcrx Trigger Receiver GIT repos] ====BusyBox FPGAs==== There are two versions of the BusyBox. One with two FPGAs and the other with only one FPGA. If only one FPGA is present it should be programmed with 'busybox_fpga1_solo.bit'. If two FPGAs are present then use 'busybox_fpga1.bit' and 'busybox_fpga2.bit'. From version 65 only one FPGA is in use. Make sure to program the second FPGA with 'fpga2_dummy.bit', else the FPGAs can not be accessed from the DCS card. ==== Compiled BusyBox Firmware Versions ==== ======Versioning====== The busybox version number is now the same as the revision number of the source in SVN it was generated from. This should make it possible to get the original source files for any programming file. A register for the version number exists in the ctrl_regs module. =====Revision 41===== ======Non functional FW changes====== # Signal names used globally in the design have been renamed: clocka => clk200, clockb => clk40, areset => rst40 /rst200 # All processes in all VHDL files used in the design, except for the trigger receiver module, have been updated to implement a synchronous reset. # Since a stable clock is required for to perform a proper synchronous reset, a new module that implements reset logic has been added to the design in busylogic_top module. The reset logic will assert reset for as long as the DCM has not locked on the incoming clock. The reset will be released synchronously about 10 cycles after the DCM has asserted its locked signal. # Since the actual clock of the LHC is 40.08 MHz and not the nominal 40 MHz the constraints for the implementation tools has been set 41 MHz. (85 degrees celsius, 41 MHz, 1.14 V) ======Event verification module (event_validator_top)====== This module has been modified so that the event ID queue now also contains the event info and event errors in addition to the event ID. The event info and event errors for the newest and current events are made available as registers. This extra info about the trigger sequence can be helpful when debugging. The event info contains the payload bit which is forwarded to the busy_controller. It is used in the process of calculating used MEBs. ======Serial decoder====== The serial decoder has been changed to reduce the resource usage. This module is replicated many times in the design so any improvement is significant. The old architecture used a shift register long enough to hold all bit-samples for one data frame (about 100 samples). The frame was captured in one go when a valid capture condition was found in the samples. The new architecture uses shorter shift register (about 10 samples) and only looks at a few samples at a time. Once the start condition is found it will capture the bits of the frame sequentially, bit by bit. The new architecture of this module has led to great improvements in resource usage. BusyBox firmware with 96 channels used to occupy approximately 96% of the FPGA. This number has been reduced to approximately 66%. Reduced resource usage makes it easier for the implementation tools to generate the programming file and it should also reduce the TDP of the device under operation. ======DCS arbiter and address decoder====== The architecture of this module has been updated to make it more readable and to register inputs such as address and data from the DCS bus master. ======Registers====== Extra registers has been added: #Number of implemented channels. This number is actually the same as the generic g_num_channels. #Current Trigger Event Info #Current Trigger Event Error #Newest Trigger Event Info #Newest Trigger Event Error ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision41/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 49===== ======Free Buffer counting scheme====== The buffer counter is now incremented on L2A only, and decremented as before on Valid Event signal (meaning that all DRORCs have received the current event). In previous versions the buffer counter was incremented on L1A and decremented on L2R, time-outs and valid events. ======Trigger burst interlock====== A new feature has been added. The purpose is to prevent long bursts of trigger. A maximum number of triggers in a burst can be defined in the burst size register. A counter ("leaky bucket") counts up until a the maximum value is reached for every L0 trigger received. It counts down on pulses from a pulse generator until minimum (0). The interval of these "leak-pulses" is programmable from 0 to 200 ms in 10 us steps. We are busy when the "leaky bucket" is full. This feature can be disabled by setting the burst size to 0 (default value). Two new registers are added: #Burst Size (address 0x2017) #Burst Leak Time (address (0x2018) A new status bit has been added to the Busy condition register to indicate Burst Bucket Full as the reason for Busy State. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision49/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 54===== ======New Sparse mode====== A new semi-multiple event buffer scheme is allowed. This allows a second event to be captured in the multi-event buffers even if sparse mode is enabled. Special care has to be taken to configure the number of buffers and the dead-time following the first of the possible two consecutive events. A new registers has been added: # Trigger Mode (address 0x2019) A new status bit has been added to the Busy condition register to indicate that two events happened, and are now being read-out. The use of this feature requires proper setting of registers, as described in the following: # Set the no of multi-event buffers to 2 (rcu-sh w 0x2009 0x02) # Set the L0 trigger time-out large enough to cover drift-time and SCEVL (for example to 200 us) (rcu-sh w 0x2008 0x14) # Enable the new sparse mode (rcu-sh w 0x2019 0x02) ======Other changes====== # The buffers-in-use count of the Busy Condidion Register is now updated correctly in busy_controller.vhd. # bb_bus_read now works correctly in busybox_tb_pkg. # Fixed R/W bug of register 0x2008 (introduced in rev. 49) ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision54/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 55===== ======L1 time====== RCU firmware with the bug fix related to reading and writing the event FIFO has been tested and used at P2 for a number of test done to check the multi event buffer functionality. Erroneous behaviour of trigger receiver module is no more observed neither at P2 nor in the RCU - Lab. ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision55/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 57===== ======Trigger Receiver L1 timer====== The programmable time-out following the start of a trigger sequence now starts on L1A instead of Trigger module busy output (L0 trigger time-out). ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision57/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 58===== ======Using Trigger Receiver Module v 1.6 (20.01.2012)====== * Single l2 messages does not generate CDH * Added Extended L2 time window to allow for CDH+payload if L2 message comes in boundary regions of the legal l2 window. This includes new register. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision58/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 63===== ======Using Trigger Receiver Module v 1.9 (17.08.2014)====== * New trigger classes with additional words for Alice CDH version 3 * Event FIFO is changed from Xilinx core IP to a generic component (inferred memory) This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1_solo.bit busybox_fpga1_solo.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/revision63/busybox_fpga2.bit busybox_fpga2.bit] =====Revision 65===== ======Using Trigger Receiver Module v 1.9 (30.06.2015)====== * New trigger classes with additional words for Alice CDH version 3 * Register map is set according to RCU2:'''Old trigger address map is not valid'''. New address map is found here[[:File:TTCrx_receiver_v2.0.2.pdf]]. * Reduced number of links on Busy box to comply with new DAQ architect (40 Links). TPC has 36 links (18x2=36), 4 additional links are kept for EMCAL. * There is only one FPGA needed to work so FPGA1 will be programmed. * -- Hardware note: In this release busy signal from FPGA2 is not used and related I/Os are disabled in Xilinx constraint file. ======Logical address mapping to physical connectors on busy-box====== * Reference point is GREEN LIGHT on connector side of the busy box (set at LEFT): D: Down, U: Up, L: Left. [[File:Bb_mapping.jpg]] 0x2100:DL1 0x2101:DL2 0x2102:DL3 0x2103:DL4 0x2104:UL1 0x2105:UL2 0x2106:UL3 0x2107:UL4 0x2108:DL5 0x2109:DL6 0x210A:DL7 0x210B:DL8 0x210C:UL5 0x210D:UL6 0x210E:UL7 0x210F:UL8 0x2110:DL9 0x2111:DL10 0x2112:DL11 0x2113:DL12 0x2114:UL9 0x2115:UL10 0x2116:UL11 0x2117:UL12 0x2118:DL13 0x2119:DL14 0x211A:DL15 0x211B:DL16 0x211C:UL13 0x211D:UL14 0x211E:UL15 0x211F:UL16 0x2120:DL17 0x2121:DL18 0x2122:DL19 0x2123:DL20 0x2124:UL17 0x2125:UL18 0x2126:UL19 0x2127:UL20 This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision65/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/fpga2_dummy.bit fpga2_dummy.bit] =====Revision 66===== ======Using Trigger Receiver Module v 2.1 (06.06.2016)====== [https://twiki.cern.ch/twiki/bin/viewauth/ALICE/TPC_RCU2_TTC_Module Click for Trigger Receiver updates] *This release only updates the trigger receiver module and firmware is tested to receive all valid trigger sequences. *Please perform a complete integration (DAQ+RCU+BusyBox) test in lab before using it at experiment. This BusyBox firmware version has been compiled with ISE version 13.2 ======Download====== *[http://web.ift.uib.no/firmware/BusyBox/revision66/busybox_fpga1.bit busybox_fpga1.bit] *[http://web.ift.uib.no/firmware/BusyBox/fpga2_dummy.bit fpga2_dummy.bit] ==== DCS board firmware for BusyBox ==== The DCS board in the BusyBox uses special firmware. See [[Electronics for the Time Projection Chamber (TPC)#Download_Section|Electronics for the TPC]] ====Generating FPGA configuration files from source code==== # Check out the desired revision from the SVN repository. # Navigate to .../busybox_firmware/trunk/ISE_projects # Run the TCL script named bbiseproject.tcl with Xilinx' TCL interpreter. The script takes three commandline arguments :<br> #*<tt>fpga_version</tt> - see [[#BusyBox FPGAs]] #*<tt>source_dir</tt> - where the source code is located. Including constraints and cores. #*<tt>project_dir</tt> - location where project is created. Note folder has to exist and should not already contain an ISE project. #:Example: <code>D:\busybox_firmware\trunk\ISE_projects>xtclsh bbiseproject.tcl busybox_fpga1_solo ..\source test<br></code> #Generate the cores with CoreGen (If it not already done) #:This can be done by using the CoreGen GUI or by invoking coregen in batch mode from the commandline. To use the GUI; start coregen while in <tt>.../busybox_firmware/trunk/source/cores</tt>. #: For batch mode : <tt>.../busybox_firmware/trunk/source/cores/coregen -b 'core'.xco</tt> replace 'core' with real name for all *.xco-files. #: Example with DOS for loop: <tt>D:\busybox_firmware\trunk\source\cores>FOR %i IN (*.xco) DO coregen -b %i</tt> #Open the project with ISE Project Navigator. #Run process 'Generate Programming File' <br> == Related documents for BusyBox == #[[Media:BusyBoxUserGuide.pdf|BusyBox User Guide (updated for FW rev 41)]] #[[Electronics_for_the_Time_Projection_Chamber_%28TPC%29#RCU_Trigger_Receiver_Module|RCU Trigger Receiver Module]] #[[Media:master_thesis_magne_munkejord.pdf|Master Thesis, Magne Munkejord]] #[[Media:jalme_phd-thesis.pdf|PhD Thesis, Johan Alme]] #[[Media:SelectMAP_Kernel_Module.pdf|SelectMAP Kernel Module report by J.K.Bernhardsen, J.M. Langeland, S. Skjerveggen (in norwegian)]] #[http://web.ift.uib.no/firmware/BusyBox/BusyBoxFeeServer.pdf BusyBox FeeServer] [[Category:Alice]] [[Category:Trigger]] 9becbd61c568f204f29716bcf0429391d772b0ae ADEXL-butterfly-curves 0 555 2305 2016-05-06T17:08:50Z Mer020 87 Created page with "To create a butterfly curve, for example for characterizing SRAM read and hold margins, simulate a single DC sweep (one source, one sweep) on a input. Plot both the input (sho..." wikitext text/x-wiki To create a butterfly curve, for example for characterizing SRAM read and hold margins, simulate a single DC sweep (one source, one sweep) on a input. Plot both the input (shows up as a straight line for a linear DC sweep) and the output (shows up as the DC response of your circuit). Have both plots in the same subwindows. go to Axis -> Y vs Y choose the first trace go again to Axis -> Y vs Y choose the second trace Put both results in the same plot, and you are finished. 75349451e67f45a67c14530cdd3d4b691fac4fb8 2306 2305 2016-05-06T17:10:47Z Mer020 87 wikitext text/x-wiki To create a butterfly curve, for example for characterizing SRAM read and hold margins, simulate a single DC sweep (one source, one sweep) on a input. Plot both the input (shows up as a straight line for a linear DC sweep) and the output (shows up as the DC response of your circuit). Have both plots in the same subwindows. go to Axis -> Y vs Y choose the first trace, press ok. go again to Axis -> Y vs Y choose the second trace, press ok. Put both results in the same plot, and you are finished. 972189926886a64d3d9fae2570344a9c8a92a360 File:Bb connectros.jpg 6 556 2308 2016-05-09T09:42:20Z Are033 82 bb_connectros.jpg wikitext text/x-wiki bb_connectros.jpg aaa25dd6367ef634596143e0a037ef82989e9974 File:Bb mapping.jpg 6 557 2312 2016-05-09T12:41:52Z Are033 82 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 HEPOutreach 0 225 2315 1055 2016-05-10T09:10:36Z Nfyal 26 /* Talks */ wikitext text/x-wiki == HEP outreach == === Talks === =TedX talk on antimatter by a former group member Lillian Smestad ! http://mypages.iit.edu/~tedxiit/ , alternatively, here is the direct link: http://livestream.com/TEDx/IIT2016= === Images === === Links === 64a851fe8a9af41642fb192544f562dd468ef642 2316 2315 2016-05-10T09:11:06Z Nfyal 26 /* Talks */ wikitext text/x-wiki == HEP outreach == === Talks === =TedX talk on antimatter by a former group member Lillian Smestad ! http://mypages.iit.edu/~tedxiit/ , alternatively, here is the direct link: http://livestream.com/TEDx/IIT2016 === Images === === Links === ccc4f6ab066eaa28ad4703e4f6232f8f5dde6b2d Coming to CERN 0 203 2317 1883 2016-05-13T09:50:10Z Ave082 33 wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23, 28 or 57 to Blandonnet (stops under the bridge, go up and to the right in the middle of the stairs), and then change to the tram 18 "CERN" or Y "Val-Thoiry". Check [http://www.tpg.ch tpg.ch] for the timetable. Get off at the stop opposite the large wooden globe. To get to the busses from the airport you go left and into the area leading to the trains. Take the escalator to the second floor and the bus stop is right outside. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == To get into CERN if you don't have anybody to pick you up it is usually easiest to show your CERN contract to clerk at the visitors office, [http://building.web.cern.ch/map/building?bno=31 map]. * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, [http://building.web.cern.ch/map/building?bno=561 map]. *Alice registration. ===CERN car=== You need to get a CERN car driving authorization from [https://edh.cern.ch/Document/General/DA here]. A scanned copy of your license needs to be attached. To get the license, you need security course, level 1+2, see below. The car is usually located outside the Bergen Office (plate number GE 603658, car number 3948), but could also be located at the parking area by building 400. The key is in the office. To fuel up, go to the CERN gas station at building 130 on Meyrin side. Use the badge attached to the key to login and enter the current mileage of the car. For other information [http://smb-dep.web.cern.ch/en/Mobility/Vehicles_with_without_logo see]. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 0326b657aacd52ea7c09697729935c5fe5d4c18d 2318 2317 2016-05-13T09:51:55Z Ave082 33 /* CERN car */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23, 28 or 57 to Blandonnet (stops under the bridge, go up and to the right in the middle of the stairs), and then change to the tram 18 "CERN" or Y "Val-Thoiry". Check [http://www.tpg.ch tpg.ch] for the timetable. Get off at the stop opposite the large wooden globe. To get to the busses from the airport you go left and into the area leading to the trains. Take the escalator to the second floor and the bus stop is right outside. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == To get into CERN if you don't have anybody to pick you up it is usually easiest to show your CERN contract to clerk at the visitors office, [http://building.web.cern.ch/map/building?bno=31 map]. * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, [http://building.web.cern.ch/map/building?bno=561 map]. *Alice registration. ===CERN car=== You need to get a CERN car driving authorization from [https://edh.cern.ch/Document/General/DA here]. A scanned copy of your license needs to be attached. To get the license, you need security course, level 1+2, see below. The car is usually located outside the Bergen Office (plate number GE 603658, car number 3948), but could also be located at the parking area by building 400. The key is in the office. To fuel up, go to the CERN gas station at building 130 on Meyrin side. Use the badge attached to the key to login and enter the current mileage of the car. The cost is charged to the team account. For other information [http://smb-dep.web.cern.ch/en/Mobility/Vehicles_with_without_logo see]. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) 61cdcdcd6b31e9feccadb33c600851a69024144b 2319 2318 2016-05-13T09:58:18Z Ave082 33 /* CERN car */ wikitext text/x-wiki Here is some gathered information that should make it easier for those people who travel to CERN for the first time. Feel free to add & edit! == Documents to bring == * Filled CERN contract or CERN short term contract ** [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/CheckIn/RformE.pdf Normal Contract] NB! Your Teamleader has to sign the contract, the buget code has to be filled. Internal Address (Bergen office): Building 587, Ground Floor, R-031 NB2! You need to provide a valid health insurance document. For norwegians this is usually the EU health insurance card (Europeisk helsetrygdkort), which you can order online here: https://tjenester.nav.no/helsetrygdkort/forside.do * In addition it seems that you now need a filled ALICE registration form as well: ** http://aliceinfo.cern.ch/Collaboration/General/secretariat/NEWCOMERS/index.html * If you want a specific picture from you on your Cern card, then you have to bring it. Otherwise they take a picture of you when making the card. == Where to stay == '''At CERN''' *[http://housing-service.web.cern.ch/housing-service/hostelwelc.html CERN hostel]. Hint: If it is full, you can still get rooms here on a day-to-day basis. You have to show up at the reception each day when it opens (7.30), and then you usually get an extension of your stay. If you don't have a bed for the night, you can ask the guard later in the evening (after 22/23:00). He gets a list and keys of the empty hostel rooms. These you can usually also get extended. '''St.Genis (Lies between CERN and ALICE) ''' * [http://balladins.eu/fiche_hotel.php?id=166 Balladins] * [http://www.hotel-sofia.com/ Hotel Sofia] * [http://www.kyriad.com/hotel/en/FRA22466.htm Kyriad Hotel] '''Between CERN and Geneve''' * [http://www.etaphotel.com/gb/hotel-5653-etap-hotel-geneve/index.shtml Etap Hotel] == How to get to CERN == At the airport, just before you leave the luggage claim area, there are special machines where you can get a free public transport ticket. To/from airport there are now several alternatives: The Y bus has been prolonged to Ferney, passing by the airport (thus giving a direct connection (with a detour through the ZIMEYSA area) between CERN and the airport. This lines runs once per hour - twice per hour in rush hours. Or you can take bus 23, 28 or 57 to Blandonnet (stops under the bridge, go up and to the right in the middle of the stairs), and then change to the tram 18 "CERN" or Y "Val-Thoiry". Check [http://www.tpg.ch tpg.ch] for the timetable. Get off at the stop opposite the large wooden globe. To get to the busses from the airport you go left and into the area leading to the trains. Take the escalator to the second floor and the bus stop is right outside. There is also a CERN shuttle bus to/from the airport ([http://gs-dep.web.cern.ch/en/content/Shuttle/Circuit4 timetable]), but you need to have a CERN card already to use it. == What to do first at CERN == To get into CERN if you don't have anybody to pick you up it is usually easiest to show your CERN contract to clerk at the visitors office, [http://building.web.cern.ch/map/building?bno=31 map]. * Go to the Users office, [http://building.web.cern.ch/map/building?bno=USERS+OFFICE:+61-R-010 map], to get your contract fixed, afterwards you get your key card from the registration office, [http://building.web.cern.ch/map/building?bno=55 map]. * To rent a bicycle, go to [http://ep-div-smi.web.cern.ch/ep-div-smi/Service_point.html Service Point] [http://building.web.cern.ch/map/building?bno=124 map] '''[http://aliceinfo.cern.ch/Collaboration/General/secretariat/ ALICE secretariat]''' Go here, [http://building.web.cern.ch/map/building?bno=301 map], for *key to the Bergen Office (if you want this), Key number: RZ1052, [http://building.web.cern.ch/map/building?bno=561 map]. *Alice registration. ===CERN car=== You need to get a CERN car driving authorization from [https://edh.cern.ch/Document/General/DA here]. A scanned copy of your license needs to be attached. To get the license, you need security course, level 1+2, see below. The car is usually located outside the Bergen Office (plate number <s>GE 603658</s>, car number 4793), but could also be located at the parking area by building 400. The key is in the office. To fuel up, go to the CERN gas station at building 130 on Meyrin side. Use the badge attached to the key to login and enter the current mileage of the car. The cost is charged to the team account. For other information [http://smb-dep.web.cern.ch/en/Mobility/Vehicles_with_without_logo see]. For other tips, check out User's office [http://ph-dep-usersoffice.web.cern.ch/ph-dep-UsersOffice/ home page]. == To do shifts == * You need a security course, this you can do at [http://sir.cern.ch sir.cern.ch]. * Request access for the control room at [https://edh.cern.ch edh.cern.ch] --> Access Request. NB: Remember to press Send when you are done adding requests. For this you need a special EDH-password, you can get this from AIS-support (Call 78888 when at CERN). The rooms to request are: ALI-ACR and ALI-COF. Set start-date for todays date, but don't set anything for the end-date. * Here is the instructions for the shifts that you can take: http://aliceinfo.cern.ch/Collaboration/Run_Coordination/Run09/shift/ * There is a shuttle bus to P2 as well: http://gs-dep.web.cern.ch/gs-dep/groups/sem/ls/RegularShuttleTimetable.htm The next shift courses for DAQ-CTP-HLT are: * on Thursday 7th of October at 14h in room 160-1-009, * on Thursday 11th of November at 14h in room 160-1-009 Those who will attend will be able to book a shorter period of training ( 2 days instead of 4 days ). == ALICE shiftwork == * Have a look into the [http://alice-project-tpc-trd-shift-manual.web.cern.ch/alice-project-TPC-TRD-Shift-Manual/TPC_ShiftGuide_Mar10.pdf TPC&TRD shiftguide]. * [https://alihlt-gw0.cern.ch/doc/manuals/operator-manual.pdf HLT shiftguide] * Book your shifts at [[https://alicesms.cern.ch/ alicesms.cern.ch] * Remember to take a shift course and book the necessary shadow shifts. * You will need access to the ALICE logbook, [https://alice-logbook.cern.ch alice-logbook.cern.ch], ask the run coordinator for access. == Printing at Cern == Cern has many printers, free to use for every visitor. However the IT department of UiB only allows its own print servers to be installed on Klientdrift machines, and blocks every other non-UiB printserver. An exception has now been added for Cern printservers, but you have to follow this way of installing them (in Windows anyway - They might be not blocked under Klientdrift Linux): * Open an explorer and type the printername in the addressfield in this way: * "\\<printername>.print.cern.ch\<printername> * Then you should be prompted for your credentials, which you enter in the form "cern\username" - and your NICE password. For the printer in the corridor outside the Bergen office it looks like this: "587-R-COR.print.cern.ch\587-R-COR" [[User:Dfe002|Dominik]] 16:00, 3 December 2010 (UTC) a9abd354702855d50ade01b8579a30e82a056940 File:TTCrx receiver v2.0.2.pdf 6 558 2320 2016-05-19T17:58:20Z Are033 82 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 XJTAG for new prototypes 0 559 2322 2016-05-20T09:51:33Z Mer020 87 Small list, hopefully helpful, made for the purpose of speeding up initial development for boundary scan testing. wikitext text/x-wiki To make an automated test setup for a new prototype pcb, a few things are needed. * Cable from XJlink to fit the prototype board. From 2x10 pin ribbon cable connector to TAP connection on the PCB. Pins 1,2,4 & 20 are reserved for VCC, NC, GND & GND on the XJlink. The rest is configurable. * Netslist of the prototype circuit, for fast setup of XJDeveloper. This can be omitted, but having a netlist will make things faster and easier. * BSDL file for the JTAG equipped IC's on the pcb. This is needed to set up the JTAG chain for the XJDeveloper. * XJTAG also provides a .h file for interfacing drivers with C links to api: [http://www.xjtag.com/XJAPI.h XJAPI.h] [http://www.xjtag.com/jtag-tools/xjapi-jtag-access.php XJAPI docs] [[Category:Mikroelektronikk]] [[Category:Programming]] [[Category:JTAG]] [[Category:XJTAG]] 861d6ed1adabad60cd3996d1f975bba25217d681 XJTAG 0 189 2323 1207 2016-05-20T09:57:01Z Mer020 87 Added link to XJTAG_for_new_prototypes wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 2.3 > Help > XJEase and XJDeveloper Tutorial This tutorial assumes you have a version 2.0 of the XJDemo board. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board. Refer to the schematic for the pinmapping for page 11 of the tutorial. # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. =Additional resources= [[XJTAG_for_new_prototypes]] [[Category:Mikroelektronikk]] c86ee47cbecc541f4cd5a554d1d0a0b61271b203 Particle Physics group 0 137 2324 2117 2016-05-27T12:37:04Z Nfo058 90 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Conferences === * [[From Higgs to Dark Matter 2014, in statu. nascendi, [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS is being evaluated now. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 24b57115896a79a1b6ae26fdaa26e8a925a08902 ATLASTutorials 0 160 2325 2151 2016-05-27T12:48:40Z Nfo058 90 wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[Software workshop, 09/09-09]] [https://indico.cern.ch/event/472469/overview ATLAS analysis tutorial, 7-8 February 2016, Oslo ] [https://indico.cern.ch/event/465378/ ATLAS software tutorial ] [https://twiki.cern.ch/twiki/bin/view/AtlasComputing/ComputingTutorials ATLAS computing tutorials twiki] == Upcoming tutorials == [https://indico.cern.ch/event/524296/overview ATLAS software tutorial June 6-10, 2016 at CERN] == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] d61d3ea12fbb5b54c5e9fede0102e5b9b001d9c4 PHYS222 0 202 2328 2121 2016-08-23T08:18:40Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [http://www.k-state.edu/ksuedl/publications/Technote%201%20-%20Equivalent%20Noise%20Bandwidth.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] * [[Media:p-n_junctions.pdf Elementary Physics of P-N Junctions]] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] f6500b6f9b01ec8e6ccad1d2000da17fe2511c52 2329 2328 2016-08-23T08:21:15Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [http://www.k-state.edu/ksuedl/publications/Technote%201%20-%20Equivalent%20Noise%20Bandwidth.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice IV ==== LTspice IV is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice IV] [[Category:Mikroelektronikk]] 8310d34c2737c99417e44785c9312ffba80da4eb Detector lab 0 21 2330 1615 2016-08-25T09:44:34Z Nfyku 4 Updating personell wikitext text/x-wiki == Goal == The aim of our research is to study high energy particle detectors, and to develop new detectors for the future. In particular, we are interested in studying medical applications of these detectors and to help bridge fundamental with technological research. == Our projects == * [[PET Project]] ** [[Labview readout setup]] ** [[XYZ table setup]] ** [[Root analysis programs]] * [[Calorimeter Activities]] * [[CALICE]] * [[3D Detector Activities]] * [[phys117 - PET project]] == Who are we? == * Students: Arild, Zhou * Postdoctors: Ganesh, Trygve * Researcher: Heidi * Professors: Gerald, Bjarne, Dieter, Renate, [http://www.uib.no/personer/Kjetil.Ullaland Kjetil] * Engineers: Attiq, Werner, Kåre == Our facilities == * The main laboratory is situated in the 3rd floor at the IFT, room 332 (55588306) * The soldering lab, room 334 * The clean room, room 324 * [[The muon spectrometer]] == Lab Equipment == * [[Lab Equipment]] list, how to's, equipment service log's etc... * [[Wishlist]] Put the things you will need for your projects here. == Health and Safety == * [[Retningslinjer for bruk av kapslede kilder ved IFT]] * [http://www.uib.no/poa/hms-portalen UIB HMS Portalen] == Resources == * Our [https://subversion.uib.no/repos/detectorlab/ SVN] * We can use this fileserver to store our collected data: ** Windows: \\ukl-felles\ift-kjernefys1\detectorlab ** Linux: /Data/ift/ift_kjernefys1/detectorlab == Recent talks == 04.11.09 * Dominik Fehlker - Presentation of the Lab [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.ppt ppt] [http://web.ift.uib.no/~dominik/files/detectorlabwiki/talks/part_phys_seminar_041109.pdf pdf] * Lars-Halvard Thunold Helleve - SiPM introduction [https://wikihost.uib.no/ift/images/d/dc/SiPM_small_talk_041109_Lars-Halvard.pdf pdf] * Kristine Indahl Helle - 3D pixel detectors [[File:3D_Si_pixels.pdf]] [[older presentations]] ==Documentation== In the [[documentation-list]] you can find relevant articles and masterthesis concerning the work in the lab. == Meetings and conferences == * 23.09. - 29.09.11: IEEE Nuclear Science Symposium and Medical Imaging Conference, Valencia (http://www.nss-mic.org/2011/) * 26.09. - 30.09.11: TWEPP-11 Topical Workshop On Electronics For Particle Physics, Vienna (http://twepp11.hephy.at/) == For internal use == [[material]] that can be used in official presentations. 49afe9a82a99a6c7501b4be7a49a68f008209188 Lab Equipment 0 111 2331 1619 2016-08-25T09:47:43Z Nfyku 4 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Number !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |2 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |1 |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |1 |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |4 |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |2 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |1 |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |1 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, 5 Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] | |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf manual] | |- |Caen N1471A |2 Ch programmable High Voltage PSU, 5.5 kV / 300 µA |[http://www.caen.it/servlet/checkCaenManualFile?Id=7746 manual] | |- |Tennelec TC244 |Amplifier |[ manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} = XY stages = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manual !Software !default values |- |2 x Zaber T-LSM200B |Motorized Stage, 200 mm travel, RS-232 plus manual control |[http://www.zaber.com/wiki/Manuals/T-LSM wiki], [http://www.zaber.com/documents/T-LSM-manual.pdf pdf] |[http://www.zaber.com/wiki/Software software] |[http://www.zaber.com/support/?tab=Device%20ids#tabs def. val.] |} cfa854ba3b1eb9de88dee939587c2aed05758e75 2332 2331 2016-08-25T09:53:22Z Nfyku 4 wikitext text/x-wiki = Power Supplies = == High Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |CAEN 40 Channel High Voltage System |High Voltage DC power supply equipped with 4x POS 200V, 4x NEG 200V, 4x POS 2000V and 2 x POS 15 kV outputs |[[CAEN 40CH HV PSU]] | |- |} == 'Medium' Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !I/O !borrowed to |- |Elektro Automatik EA-PSI 6150-01 |150 V, 1,2A linear DC power supply |RS232 | |} == Low Voltage == {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Number !Description !I/O !Drivers !Notes !borrowed to |- |TTi EL155 |2 |15V, 5A linear DC power supply | | | |2x Anja |- |TTi EL302D |1 |30V, 2A dual linear DC power supply | | | |1x Anja |- |TTi EL302Tv |1 |30V, 2A triple linear DC power supply | | | |1x Kjetil |- |TTi QL355TP |4 |15V, 5A / 35V, 3A / 35V, 0,5A + Aux, dual DC power supply |GPIB, RS232, USB |[http://www.tti1.co.uk/downloads/usb-drivers/TTi-USB-FTDI-v2_06_02.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QL-v1.5.1.zip LabView] |[https://wikihost.uib.no/ift/images/2/24/ITTQL355TPmanual.pdf Users manual] |1x Anja |- |TTi QPX1200 |2 |60V, 50A linear DC power supply |USB, RS232, LAN |[http://www.tti-test.com/go/qsx/qsx-downloads/lv-cvi-QPX-v1.0.2.zip USB], [http://tti1.co.uk/downloads/drivers/lv-cvi-QPX-v1.0.2.zip Labview] |[https://wikihost.uib.no/ift/images/1/17/ITTQPX1200manual.pdf Users manual] |1x Kjetil, 1x Lijiao |- |Oltronix Labpac 800T |1 |15V/35V, 2A/1,1A | | | | |- |ITT AX 322 |1 |2x 30V, 2,5A | | |Noisy | |- |} = Standalone measuring = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How to's !I/O !borrowed to |- |Tektronix MSO4034 |Mixed Signal Oscilloscop, 350 Mhz, 2,5Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB |ELab 4th floor |- |Tektronix MSO4104 |Mixed Signal Oscilloscop, 1 Ghz, 5 Gs/s |[https://wikihost.uib.no/ift/images/5/58/Tek4000user.pdf User manual] [https://wikihost.uib.no/ift/images/5/58/Tek4000prog.pdf Programmers manual] |LAN, USB | |- |Agilent MSO7054A |Mixed Signal Oscilloscop, 500 Mhz, 4Gs/s |[http://cp.literature.agilent.com/litweb/pdf/54695-97014.pdf Users guide] [http://www.home.agilent.com/upload/cmc_upload/All/7000_series_prog_guide.pdf Programmers guide] |LAN, USB | |- |Keithley 2700 |Multimeter / Data Acquisition System, 20 Channel |[https://wikihost.uib.no/ift/images/4/4f/Keithley2700.pdf Users manual] |GPIB, RS232 | |- |Keithley 2100 |6 1/2 Digit Multimeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2100.pdf Users manual] |USB | |- |Keithley 2635A |200V / 1fA Sourcemeter |[https://wikihost.uib.no/ift/index.php/File:Keithley2635a.pdf Reference manual] |GPIB,LAN,TSP,RS232 | |} = Pulse Generators = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !I/O !borrowed to |- |Agilent 33250A |80 Mhz Arbitrary Function Waveform Generator |[http://cp.literature.agilent.com/litweb/pdf/33250-90002.pdf Users manual] |GPIB, RS232 |1x Lijiao |- |Tektronix AFG3252 |240 Mhz Arbitrary Function Waveform Generator |[https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252usman.pdf Users manual] [https://wikihost.uib.no/ift/images/e/e6/TektronixAFG3252progman.pdf Programmers manual] |USB, GPIB | |- |Philips PM 5715 |50 Mhz Pulse / Waveform Generator | | | |- |} = Amplifiers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Phillips Scientific 6954 |Wideband Amplifier, Gain: 100, Input Voltage: 10-28V. |[http://www.phillipsscientific.com/pdf/6954ds.pdf Info] | |- |Ortec VT120 |Amplifier, Gain: 200, Input Voltage: 12V. |[http://www.ortec-online.com/pdf/vt120.pdf Info] | |} = VME devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's !borrowed to |- |Caen V2818 |PCI bridge to VME controller |[https://wikihost.uib.no/ift/images/a/a1/Caen2818usman.pdf Users manual] | |- |Caen V2718 |VME controller |[https://wikihost.uib.no/ift/images/2/26/Caenv2718usman.pdf Users manual] | |- |Caen V1729a |14 bit, 4 channel ADC |[https://wikihost.uib.no/ift/images/b/b0/Caenv1729ausman.pdf Users manual] | |- |Caen V965a |QDC |[https://wikihost.uib.no/ift/images/d/d3/Caenv965ausman.pdf Users manual] | |- |National Instruments VME-MXI-2 |VME controller | | |- |Atlas TPLL |Turbo Pixel Low Level card (TPLL) |[http://physik2.uni-goettingen.de/~jgrosse/TurboDAQ/#PLLPCC TPLL&TPCC Info] | |} = NIM devices = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manuals !borrowed to |- |Caen N957 |8k Multi Channel Analyzer + ADC |[https://wikihost.uib.no/ift/images/d/db/Caenn957usman.pdf manual] | |- |Caen N1471A |2 Ch programmable High Voltage PSU, 5.5 kV / 300 µA |[http://www.caen.it/servlet/checkCaenManualFile?Id=7746 manual] | |- |Tennelec TC244 |Amplifier |[http://web.ift.uib.no/~kjetil/wiki/Tennelec_TC244.pdf manual] | |} = Photomultipliers = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !How To's |- |2 x Hamamatsu H6780-02, S.NO: 0003 & 0004 |Photomultiplier Module, Input Voltage: 15V, Gain: 1:10E4, Gain Control Voltage: 0,25-0,9 V. Max output current: 100uA! |[[Photomultipliers]] |} = XY stages = {| border="1" cellpadding="5" cellspacing="0" !Equipment Name !Description !Manual !Software !default values |- |2 x Zaber T-LSM200B |Motorized Stage, 200 mm travel, RS-232 plus manual control |[http://www.zaber.com/wiki/Manuals/T-LSM wiki], [http://www.zaber.com/documents/T-LSM-manual.pdf pdf] |[http://www.zaber.com/wiki/Software software] |[http://www.zaber.com/support/?tab=Device%20ids#tabs def. val.] |} 5c3d6b194da054f3f47d17bf3ea073a0792dfcdf TSMC 130nm process 0 461 2333 2041 2016-09-02T07:39:35Z Nfyku 4 changed from csh to sh and from /prog to /eda wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 source /eda/cadence/cadence_init.sh tsmc_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. 7. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 8. To check and save the schematic, press 'x' or click the "Check and save" icon. 9. If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 10. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 11. Choose "Create > Test..." select the cell to simulate. 12. Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. 13. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 14. Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. 5ce16e5aa061a2b5f419ba60b3b2cec727e6f302 2369 2333 2016-11-08T12:24:50Z Nfyku 4 wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 source /eda/cadence/cadence_init.sh First time you should add the following line to you cds.lib file before starting the design environment DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf Virtuoso Mixed Signal Design Environment is started by issuing this command: tsmc_cds_start In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. # Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] # Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. 238956cfd8d5f8c7acf74ebe6c79a3c6b7f0c37c 2370 2369 2016-11-08T12:25:52Z Nfyku 4 wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 source /eda/cadence/cadence_init.sh First time you should add the following line to your cds.lib file before starting the design environment. If the ~/cds.lib doesn't exist, just create it. DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf Virtuoso Mixed Signal Design Environment is started by issuing this command: tsmc_cds_start In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. # Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] # Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. e2804d42b1313a4a621dd56d0709d374a73aaedd Symbolsk løsning av nodeligninger med Matlab 0 217 2334 2122 2016-09-13T08:46:07Z Nfyku 4 wikitext text/x-wiki === Using Kirchoff's current law (KCL) on a source follower configuration to find Vout as a function of Vin === <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vo as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland syms s Vin Vo Vgs Zc gm Rl Rs R eq1='(Vo-Vgs)/(R+Zc)+gm*Vgs+Vo/Rl=0'; eq2='(Vgs-Vo)/(R+Zc)+(Vgs-Vin)/Rs=0'; eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); disp('KCL for circuit node 1:'); pretty(eq1); disp('KCL for circuit doc prettynode 2:'); pretty(eq2); disp('Solve for Vgs'); vgs_solved=solve(eq2,Vgs); pretty(simplify(vgs_solved)); disp('Solve for Vo(vin)'); eq3=subs(eq1,Vgs,vgs_solved); Vo_solved=solve(eq3,Vo); pretty(simplify(Vo_solved/Vin)) </pre> === Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 to find Vo as a function of Is === <pre> % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2015 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; %% With feedforward capacitor eq1=sym('(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/Zc+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=subs(eq1,V1,solV1); SolVo=simplify(solve(eq3,[Vo])); disp('With capacitor only in feedforward loop'); pretty(simplify(SolVo/Is)); %% With series resistor and capacitor in feedforward loop eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=simplify(subs(eq1,V1,solV1)); SolVo=solve(eq3,[Vo]); disp('With series resistor and capacitor in feedforward loop'); pretty(simplify(SolVo/Is)); </pre> e9bc7a21efbec6a0dc3897283695d2b8755e5b1b ATLASThesesNotes 0 234 2335 2118 2016-09-23T14:58:52Z Nfyst 67 /* Defended Master theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 -[[File:thesis_Olausen.pdf]] * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Opservation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] c105a3610afa6549b1405668d0ae93b124ad503d 2338 2335 2016-09-23T15:41:51Z Nfyst 67 /* Defended Master theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] e49cc7f79470f97ccb058bcdccc6279766634ce2 2339 2338 2016-09-23T16:11:45Z Nfyst 67 /* Defended Master theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] 239631edf93728d9591acd6a25bf19b40eb3cc9d 2345 2339 2016-09-23T23:39:25Z Nfyal 26 /* Defended PhD theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] 64c776737139a5787b282abd9be99452bf367dbf 2376 2345 2016-12-22T00:46:51Z Nfyal 26 /* Defended PhD theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] e530d9445c58218c2abbc9048f0f74a5c230096a File:MasterSimenHellesund.pdf 6 560 2336 2016-09-23T15:00:18Z Nfyst 67 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 2337 2336 2016-09-23T15:07:58Z Nfyst 67 Nfyst uploaded a new version of [[File:MasterSimenHellesund.pdf]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ParticlePhysicsGroupMeetings 0 139 2340 2136 2016-09-23T22:08:47Z Nfyal 26 /* Seminar and meeting information */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/7495/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2016 === Nordic b-annual particle physics meeting, please register before 15 december and book your hotel before 1st of December: http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 4b43ebdd8572f6caf71a57809f453e1abdac2057 2356 2340 2016-09-24T04:00:44Z Nfyal 26 /* 2016 */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/7495/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2016 === * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] e6ec7f974f8c3682b25d9e1f73195a0c93d57ed4 2362 2356 2016-10-24T13:03:02Z Nfyal 26 /* 2016 */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/7495/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) == 2017 == EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] e2129cec7b7df6d9d7991d1f97cf91aba400eebb 2363 2362 2016-10-24T13:06:17Z Nfyal 26 /* 2017 */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/7495/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] a28756b6c6872f9203e5658d771732be9fa55d4e 2365 2363 2016-10-24T13:08:08Z Nfyal 26 /* 2017 */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics) https://indico.cern.ch/category/7495/ Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here: https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] bb10aadc53ee4fd2b4c82b6d32005ddc21b328af 2372 2365 2016-11-15T16:33:28Z Nfyal 26 /* Seminar and meeting information */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics). This includes 2016-2017 Bergen-Oslo meetings. https://indico.cern.ch/category/7495/ Old and not updated Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here (I still keep it for a while): https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 637f5b60e82e8fc30d836d5da0fcec5aeea90f01 Particle Physics group 0 137 2341 2324 2016-09-23T23:22:23Z Nfyal 26 /* Particle Physics */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === *[[ The Dark Side of the Universe, DSU2016 25-29 July 2016 https://indico.cern.ch/event/459881/ ]] *[[Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 ]]* * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 40b4402a3b5535ec00c50533239237c1b5fcb3a3 2342 2341 2016-09-23T23:23:53Z Nfyal 26 /* Local Conferences */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 24260f5ed80defdcad615a4f63db17349b3532c9 2347 2342 2016-09-24T02:07:56Z Nfyal 26 /* Particle Physics */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] b46091ace06fedacc8b2bc5ced6afc0e2233c815 2348 2347 2016-09-24T02:11:10Z Nfyal 26 /* Particle Physics */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 717cc78e573c40078989e9aaa3585496020d926f 2350 2348 2016-09-24T03:47:14Z Nfyal 26 /* Particle Physics */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 8cef6aeaf44442584394b95cf878e152eda5d566 2351 2350 2016-09-24T03:48:52Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 3ca89a81becb3b04ca630d321d7e97159ac63995 2352 2351 2016-09-24T03:51:54Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] f72d727d64bc176036d9104235c4fbc5ac662ef8 2353 2352 2016-09-24T03:52:30Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] Changed by AL 25/09/2015 Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] 381b93810291298e054f7b9eeee7797079b03f8c 2354 2353 2016-09-24T03:56:08Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] Changed by AL 25/09/2015 * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] Last changes: [[User:Tbu082|Tbu082]] 16:30, 10 March 2009 (CET) [[Category:Particle Physics]] b3ca996f8c0fc081736636460ab6f715b784399b 2355 2354 2016-09-24T03:57:09Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 3623deaa14a350bff22f7d164db4ad9ea39c9b62 2357 2355 2016-09-25T00:53:02Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] e58026c249b786bd0403b769eb714b0fb1802dc3 2358 2357 2016-09-25T01:01:34Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 1392961632d47dce1db48277066d22aab75f535f 2359 2358 2016-09-26T02:57:39Z Nfyal 26 /* Misc and AoB */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] f506f67a99f75f2ed2691ad261c0c1e658c09e82 ATLASTutorials 0 160 2343 2325 2016-09-23T23:27:12Z Nfyal 26 /* Upcoming tutorials */ wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[Software workshop, 09/09-09]] [https://indico.cern.ch/event/472469/overview ATLAS analysis tutorial, 7-8 February 2016, Oslo ] [https://indico.cern.ch/event/465378/ ATLAS software tutorial ] [https://twiki.cern.ch/twiki/bin/view/AtlasComputing/ComputingTutorials ATLAS computing tutorials twiki] == Upcoming tutorials == [https://twiki.cern.ch/twiki/bin/view/AtlasComputing/SoftwareTutorial?redirectedfrom=AtlasComputing.RegularComputingTutorial Regular ATLAS Computing tutorials wiki] == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] 16d5a5dcefebea3700f9325d7344adc4537d53e4 2344 2343 2016-09-23T23:27:54Z Nfyal 26 /* Previous tutorials */ wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[Software workshop, 09/09-09]] [https://indico.cern.ch/event/524296/overview ATLAS software tutorial June 6-10, 2016 at CERN] [https://indico.cern.ch/event/472469/overview ATLAS analysis tutorial, 7-8 February 2016, Oslo ] [https://indico.cern.ch/event/465378/ ATLAS software tutorial ] [https://twiki.cern.ch/twiki/bin/view/AtlasComputing/ComputingTutorials ATLAS computing tutorials twiki] == Upcoming tutorials == [https://twiki.cern.ch/twiki/bin/view/AtlasComputing/SoftwareTutorial?redirectedfrom=AtlasComputing.RegularComputingTutorial Regular ATLAS Computing tutorials wiki] == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] 00cec019e9d99daa37c45196be5e99f4ac7f745e File:PhDthesis Dale-1.pdf 6 561 2346 2016-09-23T23:40:24Z Nfyal 26 PhD Thesis of Orjan Dale, 2016 wikitext text/x-wiki PhD Thesis of Orjan Dale, 2016 6bc9525d17b50eaf2db946417338783d54edf98c File:ProjectDescription2015.pdf 6 562 2349 2016-09-24T02:12:08Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 PHYS222 0 202 2360 2329 2016-09-28T11:41:14Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [http://www.k-state.edu/ksuedl/publications/Technote%201%20-%20Equivalent%20Noise%20Bandwidth.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] ae74307e64675199d30e328ae4b2e1684ba6cfce Eksempler/Oppgaver 0 223 2361 918 2016-09-28T11:42:00Z Nfyku 4 wikitext text/x-wiki == Øvingsoppgaver PHYS222== === Problem 3.4 from Gray et.al. === For the common-source amplifier of Fig 3.12, calculate the small-signal voltage gain and the bias values of Vi and Vo where the small-signal voltage gain is unity with the transistor operating in the active region. [[Spice deck]] == Øvingsoppgaver PHYS223== === Estimering av delay === Du skal i denne oppgaven konstruere en inverter av transistorer, lage symbol på den for så å finne propogation delayet ved hjelp av simulering. Du skal også finne delayet for en Fan Out of Four FO4, en statisk flipflop og en dynamisk flipflop. 1. Følg tutorialet [[IC_studio#Tutorial_for_konstruksjon_av_inverter_og_symbol]] eller prøv deg frem selv for å lage en inverter med tilhørende symbol i ICstudio. 2. Lag et nytt skjema der du legger inn inverteren, signal kildene og slikt, bruk en inverter som last. 3. Simuler og finn tpdr og tpdf 4. Lag til en inverter til under som har fire parallelle invertere som last 5. Simuler og finn tpdr og tpdf 6. Lag en dynamisk flipflop som vist i figur 7.19a s405 i Weste et.al. 7. Simuler og finn tpdr og tpdf om du vil kan du og prøve å finne ut setup tiden ved å sende innsagnelet inn litt før klokken. Du vil kunne se at utsignalet blir liggende på et mellomnivå i en del av pulsen. 8. Lag en latch fra transistorer med tilhørende symbol. Se figur 7.18 s405 i Weste et.al. 9. Gjør 6. og 7. for en statisk flipflop med det nye symbolet. Se figur 7.19b s405 i Weste et.al. 10. Regn ut path delay for den dynamiske og statisk flipflopen, bruk unit kapasitanser. 11. Prøv å bruke kondensatorene oppgitt av simuleringen for å se om du får samme delay som simuleringen. [[Tips]] [[Category:Mikroelektronikk]] d54fecb52468c6605496dacdb86716a10f33082f File:FirstCircular.txt 6 563 2364 2016-10-24T13:06:52Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:EPS-FirstCircular.txt 6 564 2366 2016-10-24T13:09:41Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 IHP 130nm process 0 472 2367 2106 2016-11-08T09:19:36Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. First chose a parent directory, e.g. cd ~/ihp Copy the user environment design and set general Cadence environment variables by doing: cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/work/skel . source /eda/cadence/cadence_init.sh Change cshrc.cadence in ~/ihp/skel/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment source ~/ihp/skel/cds/cshrc.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation [[Category:Mikroelektronikk]] 859e833e1485a90b44649ee0571b406d98ecd68c 2368 2367 2016-11-08T10:19:50Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. First chose a parent directory, e.g. cd ~/ihp Copy the user environment design and set general Cadence environment variables by doing: cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/work/skel . source /eda/cadence/cadence_init.sh Change cshrc.cadence in ~/ihp/skel/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment source ~/ihp/skel/cds/sh.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation [[Category:Mikroelektronikk]] c5c799f8c13a1311967958dbd5b9aee7a7a69fe3 2371 2368 2016-11-08T13:25:14Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. First chose a parent directory, e.g. cd ~/ihp Copy the user environment design and set general Cadence environment variables by doing: cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/work/skel . source /eda/cadence/cadence_init.sh Change cshrc.cadence in ~/ihp/skel/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment source ~/ihp/skel/cds/sh.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] 87cf4f5bde7a31afd931163fcded0592a43ab6cb Main Page 0 1 2373 1671 2016-11-16T13:14:33Z Nfyku 4 La inn teknisk avdeling wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] * [[DAMARA]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [[Nano Physics| Nano Physics Group]] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] cca7574740b75dd42461a3a37cf87dc451778329 2374 2373 2016-11-23T08:31:35Z Nfyku 4 Institutt for Fysikk og Teknologis Wiki wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] * [[DAMARA]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [http://wiki.uib.no/nanolab| Nano Lab] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 765f039e8d86c1c8a4b4b692f7c510f49d31fe90 2375 2374 2016-11-23T08:32:13Z Nfyku 4 wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[Space Physics group]] * [[DAMARA]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [http://wiki.uib.no/nanolab Nano Lab] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 89a4aa3b34a56973b0b2071d9d19c11355de67bc File:PhDthesis-jan-lindroos.pdf 6 565 2377 2016-12-22T00:48:16Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 2378 2377 2016-12-22T00:51:29Z Nfyal 26 Nfyal uploaded a new version of [[File:PhDthesis-jan-lindroos.pdf]] wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Teknisk avdeling 0 566 2379 2017-01-04T13:32:20Z Nfyku 4 Created page with "== Teknisk avdeling ved IFT == [[Instrumentliste]]" wikitext text/x-wiki == Teknisk avdeling ved IFT == [[Instrumentliste]] 75bde7bb4a2ec95451475914acdf6cc2dfa13cb4 Main Page 0 1 2380 2375 2017-01-04T13:39:14Z Nfyku 4 Removing Space Physics Group page since it had no interesting info wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[Detector lab]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [[Particle Physics group]] * [[DAMARA]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [http://wiki.uib.no/nanolab Nano Lab] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 15436494c37eae6f5d405d506fbf7bca845ed2f0 2400 2380 2017-02-15T14:26:11Z Gge002 52 wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[DAMARA]] * [[Detector lab]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [http://wiki.uib.no/nanolab Nano Lab] * [[Particle Physics group]] * [[Strålevern]] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] ab17d6735e1bb1e445f25d94e8344540fd674760 Instrumentliste 0 567 2381 2017-01-04T14:05:40Z Nfyku 4 Created page with "==Forkortelsesliste== ===Grupper/Avdelinger=== {| |MICRO||Microelectronics group |- |TEKAVD||Teknisk Avdeling |- |DETLAB||Detektorlab |- |ALICE||ALICE eksperimentet |- |ATLAS..." wikitext text/x-wiki ==Forkortelsesliste== ===Grupper/Avdelinger=== {| |MICRO||Microelectronics group |- |TEKAVD||Teknisk Avdeling |- |DETLAB||Detektorlab |- |ALICE||ALICE eksperimentet |- |ATLAS||ATLAS eksperimentet |- |BCSS||Birkeland Centre for Space Science |- |} ===Instrumentkategorier=== {| |OSC||Oscilloskop||Oscilloscope |- |PSU||Strømforsyning||Power Supply |- |MET||Måleinstrument||System Source meter||Multimeter |- |ANA||Analysator||Spektrumsanalysator||Netverksanalysator |- |} a024b5f832bdc11f1df52234dd4aa6d66bf7a8f1 2382 2381 2017-01-04T14:35:18Z Nfyku 4 wikitext text/x-wiki ==Instrumenter== ==Forkortelsesliste== {| class="wikitable" !Type!!Manufacturer!!Model!!UiB-Serial and year!!Room!!Tag |- |Arbitrary Function Generator |Tektronix |AFG3252 |189999 (2010) |3XX |TEKAVD-DETLAB-GEN-001 |- |Oscilloscope |Tektroix |MSO4034 |189840 (2010) |3XX |TEKAVD-DETLAB-OSC-001 |} ===Grupper/Avdelinger=== {| |MICRO||Microelectronics group |- |TEKAVD||Teknisk Avdeling |- |DETLAB||Detektorlab |- |ALICE||ALICE eksperimentet |- |ATLAS||ATLAS eksperimentet |- |BCSS||Birkeland Centre for Space Science |- |} ===Instrumentkategorier=== {| |OSC||Oscilloskop||Oscilloscope |- |PSU||Strømforsyning||Power Supply |- |MET||Måleinstrument||System Source meter||Multimeter |- |ANA||Analysator||Spektrumsanalysator||Netverksanalysator |- |} ea0cc8152af67b9237f3fa304764641cd5c12460 2383 2382 2017-01-04T14:37:27Z Nfyku 4 wikitext text/x-wiki ==Instrumenter== {| class="wikitable" !Type!!Manufacturer!!Model!!UiB-Serial and year!!Room!!Tag |- |Arbitrary Function Generator |Tektronix |AFG3252 |189999 (2010) |3XX |TEKAVD-DETLAB-GEN-001 |- |Oscilloscope |Tektroix |MSO4034 |189840 (2010) |3XX |TEKAVD-DETLAB-OSC-001 |} ==Forkortelsesliste== ===Grupper/Avdelinger=== {| class="wikitable" |MICRO||Microelectronics group |- |TEKAVD||Teknisk Avdeling |- |DETLAB||Detektorlab |- |ALICE||ALICE eksperimentet |- |ATLAS||ATLAS eksperimentet |- |BCSS||Birkeland Centre for Space Science |- |} ===Instrumentkategorier=== {| class="wikitable" |OSC||Oscilloskop||Oscilloscope |- |PSU||Strømforsyning||Power Supply |- |MET||Måleinstrument||System Source meter||Multimeter |- |ANA||Analysator||Spektrumsanalysator||Netverksanalysator |- |} [[Category:Teknisk Avdeling]] 6573a1435b674e7c542e5f27ec329b755632bc12 2384 2383 2017-01-04T14:39:34Z Nfyku 4 /* Grupper/Avdelinger */ wikitext text/x-wiki ==Instrumenter== {| class="wikitable" !Type!!Manufacturer!!Model!!UiB-Serial and year!!Room!!Tag |- |Arbitrary Function Generator |Tektronix |AFG3252 |189999 (2010) |3XX |TEKAVD-DETLAB-GEN-001 |- |Oscilloscope |Tektroix |MSO4034 |189840 (2010) |3XX |TEKAVD-DETLAB-OSC-001 |} ==Forkortelsesliste== ===Grupper/Avdelinger/Labber=== {| class="wikitable" |MICRO||Microelectronics group |- |TEKAVD||Teknisk Avdeling |- |DETLAB||Detektorlab |- |ALICE||ALICE eksperimentet |- |ATLAS||ATLAS eksperimentet |- |BCSS||Birkeland Centre for Space Science |- |} ===Instrumentkategorier=== {| class="wikitable" |OSC||Oscilloskop||Oscilloscope |- |PSU||Strømforsyning||Power Supply |- |MET||Måleinstrument||System Source meter||Multimeter |- |ANA||Analysator||Spektrumsanalysator||Netverksanalysator |- |} [[Category:Teknisk Avdeling]] cb36220127f40f167992ba5b7b95d5a304176c4d 2385 2384 2017-01-05T08:16:35Z Nfyku 4 sortert alfabetisk wikitext text/x-wiki ==Instrumenter== {| class="wikitable" !Type!!Manufacturer!!Model!!UiB-Serial and year!!Room!!Tag |- |Arbitrary Function Generator |Tektronix |AFG3252 |189999 (2010) |3XX |TEKAVD-DETLAB-GEN-001 |- |Oscilloscope |Tektronix |MSO4034 |189840 (2010) |3XX |TEKAVD-DETLAB-OSC-001 |} ==Forkortelsesliste== ===Grupper/Avdelinger/Labber=== {| class="wikitable" |ALICE||ALICE eksperimentet |- |ATLAS||ATLAS eksperimentet |- |BCSS||Birkeland Centre for Space Science |- |DETLAB||Detektorlab |- |MICRO||Microelectronics group |- |TEKAVD||Teknisk Avdeling |} ===Instrumentkategorier=== {| class="wikitable" |ANA||Analysator||Spektrumsanalysator||Netverksanalysator |- |MET||Måleinstrument||System Source meter||Multimeter |- |OSC||Oscilloskop||Oscilloscope |- |PSU||Strømforsyning||Power Supply |- |} [[Category:Teknisk Avdeling]] 45f936c5f36e002e51c07eaafb127ccd8e0d3a86 Teknisk hjelp 0 279 2386 1836 2017-01-05T08:42:07Z Nfyku 4 wikitext text/x-wiki [[SSH innlogging]] Hvordan logge inn med ssh fra remote Windows-PC [[VNC]] Hvordan bruke VNC for å logge inn fra remote Linux-PC eller Windows-PC [[Xming]] Hvordan bruke Xming for å logge inn fra remote Windows-PC [[http://www.msc.rl.ac.uk/europractice/software/mentor.html Europractice Mentor Graphics Software Overview]] [[http://www.msc.rl.ac.uk/europractice/software/cadence.html Europractice Cadence Software Overview]] [[Cadence]] Hvordan installere Cadence [[gitlab]] Hvordan bruke gitlab [[Category:Mikroelektronikk]] eb31ca63cb20b17b475f72f39b3c3116d347244c Gitlab 0 568 2387 2017-01-05T08:55:20Z Nfyku 4 Created page with "== Software repository == We use the '''gitlab''' server hosted by IT of University of Bergen. Further information: * [https://docs.gitlab.com/ce/gitlab-basics/README.html Gi..." wikitext text/x-wiki == Software repository == We use the '''gitlab''' server hosted by IT of University of Bergen. Further information: * [https://docs.gitlab.com/ce/gitlab-basics/README.html Gitlab basics] * [https://docs.gitlab.com/ee/workflow/README.html Gitlab workflow] == Development workflow == Every logged-in user can access the main repository, however only a small group of administrators has write access. To contribute, a user creates a ''fork'' from the repository. This is a copy where a single developer or a group of developers have full access. The main repository has the following branches: * '''production''': the latest production code, in this branch we have release tags * '''master''': the latest stable release * '''dev''': the development branch In addition to those main branches there can be ''feature'' branches where development happens detached from the main branches. A ''feature'' branch is based on the ''dev'' branch and has a limited lifetime. === Creating a project fork === A ''project fork'' or ''repository fork'' is a copy of the original repository where a user or a group of users has/have full control. All development in our project is carried out in the individual forks. Branches of project forks are merged back into the main repository by '''merge requests''', preferably via '''fast forward''' merges. That requires developers to rebase project forks to the main repository and resolve all conflicts before requesting a merge. [https://docs.gitlab.com/ce/gitlab-basics/fork-project.html How to fork a project] Your repository fork is your sandbox, you can do whatever you want. Unless you have your own rules at hand right now you can apply the following: * leave the ''master'' branch in sync with the main repository, do not make commits to it * commit your changes to the ''dev'' branch * if you start a new feature, and it's expected to take a while, make a ''feature'' branch, e.g. ''dev-feature'' and give the feature a name * synchronize regularly to the main repository by rebasing === Making local development copy === Clone directly from your development fork, replace ''user'' appropriately. '''Note''': the gitlab offers two modes for the link to be cloned, you can choose ''ssh'' (default setting) or ''https''. If you can not clone with the proposed default link, try option ''https://''. git clone https://user@gitlab.uib.no/asim/asdc.git This repository will get the name ''origin'' in your local clone. If you have cloned already from the main repository, the upstream link can be changed as follows cd <reponame> git remote set-url origin https://user@gitlab.uib.no/asim/asdc.git === Pushing to development fork === Once you have added commits to e.g. the '''dev''' branch, those commits can be ''pushed'' upstream to the fork. git push origin dev === Pull/Merge request === All updates to the main repository are made via ''merge requests'' (github refers to them as ''pull requests''). A merge request requires the code update to be in a mergable branch in a development fork. Merge request are also used widely to share ''work-in-progress'' with your colleagues and for code reviews. Mark such Merge request with "'''WIP:'''". ==== Preparation ==== In order to avoid conflicts, first the fork has to be updated to the main repository. The idea behind this is that all potential conflicts can be resolved by the developer with the best knowledge about the matter, while the maintainer can simple merge ''fast-forward''. ==== Example workflow for a Merge request ==== # Go to your gitlab user space at [https://gitlab.uib.no/user https://gitlab.uib.no/user] (replace ''user'' appropriately. # Find the project fork, e.g. in the list of projects associated with you from the upper main menu. # In the line with the many columns regarding the repository, click on the "+"-symbol on the right hand side and choose "New merge request" # Select project and branch for both source and target, and click "Compare branches and continue" # Review the list of commits in this merge request, give it a descriptive title and description, pick an assignee # Submit the merge request === Importing an external package === The project will use a couple of external packages which are hosted in a different master repository. Copies of such external packages can be added to the gitlab server under our project group to provide a consistent package. Here is a proposed workflow for importing a package which is already hosted in git. # Create new repository in the asim group or ask for creation, lets call it ''newPackage'' # Fork the repository to your user space # Clone the package you want to import #:<pre> git clone <some_external_link> newPackage # we give it the new name</pre> #:<pre> cd newPackage</pre> # Redirect upstream URL to the fork in your gitlab user space #:<pre> git remote set-url origin https://user@gitlab.uib.no/user/newPackage.git</pre> # Now make a forced push (option ''-f'') to import the repository to your fork #:<pre> git push -f origin</pre> # Create merge request to branch ''import'' (if not existing, ''master'' or any other appropriate branch) by following the instructions [[Documentation#Pull/Merge request | Pull/Merge request]] b5f3b9d11943794fbf9faac8c7e22528eac77ea3 Modelsim/Questa 0 33 2388 2274 2017-01-18T09:28:27Z Nfyku 4 wikitext text/x-wiki Mapping av alterabibliotek: <pre> vmap cyclonev /prog/altera/vhdl_libs/cyclonev vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] [[Synthese av VHDL - Oppdatert]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] [http://www.ashenden.com.au/ Ashenden Designs] [http://freerangefactory.org/books_tuts.html Free Range VHDL textbook] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] [http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [http://bitvis.no/products/bitvis-utility-library/ Bitvis utility library] [[Category:Mikroelektronikk]] 764fe168572d14320ed19f3dce6d98a04eac6cfe 2395 2388 2017-02-02T13:42:14Z Nfyku 4 wikitext text/x-wiki <!-- Mapping av alterabibliotek: <pre> vmap cyclonev /prog/altera/vhdl_libs/cyclonev vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> --> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] [[Synthese av VHDL - Oppdatert]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] [http://www.ashenden.com.au/ Ashenden Designs] [http://freerangefactory.org/books_tuts.html Free Range VHDL textbook] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] [http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [http://bitvis.no/products/bitvis-utility-library/ Bitvis utility library] [[Category:Mikroelektronikk]] 51a4cff4941ff6ac3f160de7f601e8e8796d3c78 File:1.png 6 484 2389 2226 2017-01-25T14:26:55Z Ogr043 86 Ogr043 uploaded a new version of [[File:1.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:20160302215840!1.png 6 569 2390 2017-01-25T14:28:27Z Ogr043 86 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Bitvis UVVM VHDL Verification Component Framework 0 481 2391 2203 2017-01-25T14:28:52Z Ogr043 86 /* What's in the folders? */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wr, rd => sbi_if.rd, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} 1d24a0c9adf72906632d9e43cbbf475223693a0e 2412 2391 2017-02-17T15:20:10Z Oly004 94 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} 3e19de6589179a6aeef4bef6176b86477613ffef Microelectronics group 0 25 2392 2140 2017-02-01T10:36:49Z Nfyku 4 wikitext text/x-wiki == Mikroelektronikk == * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim * [[Bitvis UVVM VHDL Verification Component Framework]] * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Cadence Virtuoso]] * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven * [[SmartFusion2]] Oppsett og design med SF2 * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus [[Category:Mikroelektronikk]] 387ebc7e18d1a561a272a2d9624cd60e709466a8 2393 2392 2017-02-01T10:45:17Z Nfyku 4 Omorganisering wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Annet === * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[Bitvis UVVM VHDL Verification Component Framework]] * [[FLTK GUI]] Graphical User Interface using FLTK * [[Tutorials]] Tutorials from the web * [[ADS]] Getting started with Agilent Advanced Design System * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[SmartFusion2]] Oppsett og design med SF2 * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus == Andre fagressurser og laboratorieveiledninger== * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort [[Category:Mikroelektronikk]] ed5bb0bb8cc7551e7bbfc355d626fa7e4fc47678 2394 2393 2017-02-01T10:54:32Z Nfyku 4 wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper == Andre fagressurser og laboratorieveiledninger== * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] e11106b3abb1eae9331422566e43ed540ec32de9 Simulering av VHDL 0 34 2396 2092 2017-02-02T13:45:57Z Nfyku 4 Oppdatert oppstartsinstruksjon wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. ssh -X mikroserver3 source /eda/mentor/2016-17/scripts/QUESTA-CORE-PRIME_10.5c-4_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] 249c4c695d423e9c23ebee2c1c43871dcd70cfb3 2397 2396 2017-02-03T07:46:45Z Nfyku 4 /* Starte Questa Sim */ wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. ssh -X mikroserver3 # eller mikroserver2 source /eda/mentor/2016-17/scripts/QUESTA-CORE-PRIME_10.5c-4_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden i eksempel 6.3 i kompendiet. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> [[Category:Mikroelektronikk]] 51a5c3658cdb0ae9faafb61226e47441421f2680 2398 2397 2017-02-09T15:47:59Z Nfyku 4 /* Signaler og variable */ wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. ssh -X mikroserver3 # eller mikroserver2 source /eda/mentor/2016-17/scripts/QUESTA-CORE-PRIME_10.5c-4_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden under. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. Hva er forskjellen som funksjon av tid/delta-tid? <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process; END architecture difference; </pre> f52ed686a250020529379241711615ee9b4bb40c ATLASThesesNotes 0 234 2399 2376 2017-02-10T09:36:47Z Nfyst 67 /* Defended PhD theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. (can be found via 'Bibsys') === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] 3bba616b58d4233d97d5a1d4d1dd8d6486aab5ce 2419 2399 2017-06-19T14:27:51Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. (can be found via 'Bibsys') === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] 8564ba6c6b5a522542b09ea4c9604da1a642a6db 2422 2419 2017-07-25T13:30:01Z Nfyst 67 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. (can be found via 'Bibsys') === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] 52f54c92486a472f87a01c4195f8f00e1cfa98da File:TableHeader.jpg 6 571 2402 2017-02-15T14:33:09Z Gge002 52 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Strålevern 0 572 2403 2017-02-15T14:49:29Z Gge002 52 Created page with "=Strålevern= ==Førstegangsbrukere== ==Regler for bruk av strålingskilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] File:TableHeader.jpg|thum..." wikitext text/x-wiki =Strålevern= ==Førstegangsbrukere== ==Regler for bruk av strålingskilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] [[File:TableHeader.jpg|thumb|alt=Logbokformat|Fig. 2 Logbokformat]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Hierarket er som i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab kildeansvarlig deles kildene ut av STK. #Lab kildeansvarlig velges av brukerne til den labben, STK eller Instituttleder. #Hver lab skal ha logbok hvor bevegelsene av hver kilde som hører til denne laben skal registreres. Logboken skal ha formatet fra Fig. 2: #Den første siden i labboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Logboken skal være på labben til enhver tid, bindet med tråd til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab kildeansvarlig ofte og uten varsel. #Det blir 1 nøkler til tilsvarende kildeskap med lab kildeansvarlig og 1 nøkkel med STK. Leder Teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er til stedet. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av overnevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine men overføringen skal skje med overtagelsesprotokoll som er en del av logboken. Lab kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab kildeansvarlig. Hvis han/hun ikke er til stedet kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over hodet på noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålingskilde skal markeres med skilt og eksponeringsvurdering skal utføres. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålingskilder uten dosimeter. STK og HMS ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetrer til HMS ansvarlig i øyeblikket de finner ut at de er gravide (se punkt 18). Dosimetrene blir returnert etter fødsel om fremdeles ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. 87e14d425c283ef4df9ac0d8740b0034bcd1d022 2404 2403 2017-02-15T15:02:31Z Nfyku 4 Korrektur wikitext text/x-wiki ==Førstegangsbrukere== Her kommer tekst ==Regler for bruk av strålingskilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] [[File:TableHeader.jpg|thumb|alt=Logbokformat|Fig. 2 Logbokformat]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bindet med tråd til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt og eksponeringsvurdering skal utføres. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. c9a301287975bd1c24e687efa165d01340217ea2 2406 2404 2017-02-16T08:22:50Z Gge002 52 wikitext text/x-wiki ==Førstegangsbrukere== Førstegangsbrukere skall: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålingskilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke ha dosimeter i løpet av graviditeten) ==Regler for bruk av strålingskilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] [[File:TableHeader.jpg|thumb|alt=Logbokformat|Fig. 2 Logbokformat]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bindet med tråd til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt og eksponeringsvurdering skal utføres. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. 26c0fa721e921fdc087e8e07a150464107476877 2407 2406 2017-02-16T08:26:12Z Nfyku 4 Korrektur wikitext text/x-wiki ==Førstegangsbrukere== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke ha dosimeter i løpet av svangerskapet) ==Regler for bruk av strålekilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] [[File:TableHeader.jpg|thumb|alt=Logbokformat|Fig. 2 Logbokformat]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt og eksponeringsvurdering skal utføres. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. b6067b1b48b0c6384761020f2ce72febac87724f 2410 2407 2017-02-16T08:35:54Z Gge002 52 wikitext text/x-wiki ==Førstegangsbrukere== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke ha dosimeter i løpet av svangerskapet) ==Regler for bruk av strålekilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] [[File:TableHeader.jpg|thumb|alt=Logbokformat|Fig. 2 Logbokformat]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. 3a69d6484d40c2ad29362fabbc1f78ecbee16b63 2411 2410 2017-02-16T17:03:20Z Gge002 52 wikitext text/x-wiki ==Førstegangsbrukere== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ==Regler for bruk av strålekilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] [[File:TableHeader.jpg|thumb|alt=Logbokformat|Fig. 2 Logbokformat]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. f556b46f10971944995ab45727e984ae8747fa2d Få tilgang til å opprette eller redigere sider i wikien 0 154 2405 2124 2017-02-16T08:07:33Z Nfyku 4 wikitext text/x-wiki IFTs wiki er i utgangspunktet<ref name="lesbar">Det går an å stenge enkelte sider slik at kun brukere ved UiB får tilgang</ref> lesbar for alle som ønsker det, men det kreves såkalte sysops-rettigheter for å kunne opprette eller redigere sider. Noen brukere (Bureaucrats) kan gi slike rettigheter. Ta kontakt med en av dem hvis du trenger editeringsrettigheter. Husk å logge inn før du spør om slike rettigheter. * [http://www.uib.no/personer/Kjetil.Heitmann Kjetil Heitmann] * [http://www.uib.no/personer/Kjetil.Ullaland Kjetil Ullaland] ---- <references/> 841863d031f1d56476e56352287c19fa61052aeb File:Slide2.JPG 6 573 2408 2017-02-16T08:29:57Z Gge002 52 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Slide1.JPG 6 574 2409 2017-02-16T08:29:57Z Gge002 52 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 IHP 130nm process 0 472 2413 2371 2017-04-05T08:05:30Z Nfyku 4 Changed cadence init wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. First chose a parent directory, e.g. cd ~/ihp Copy the user environment design and set general Cadence environment variables by doing: cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/work/skel . source /eda/cadence/2016-17/scripts/analog_flow.sh Change sh.cadence in ~/ihp/skel/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment source ~/ihp/skel/cds/sh.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] fc7f1e33976f019ffc1064e11aff88728bd08fe6 2414 2413 2017-04-05T08:30:11Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. Copy the user environment design to your chosen parent directory (e.g ~/ihp) and set general Cadence environment variables by doing: cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/work/skel ~/ihp source /eda/cadence/2016-17/scripts/analog_flow.sh Change sh.cadence in ~/ihp/skel/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment source ~/ihp/skel/cds/sh.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] ca0a1922f0a7338138292f06a5d6ecabd85b19a5 2415 2414 2017-04-20T15:01:15Z Nfyku 4 Updated designkit to .5.0_a wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. Copy the user environment design to your chosen parent directory (e.g ~/ihp) and set general Cadence environment variables by doing: cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp source /eda/cadence/2016-17/scripts/analog_flow.sh Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment cd ~/ihp/cds/ source sh.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] 6d90949fc9e71ad2e3faea657fb6ea150f913b4a 2416 2415 2017-04-21T11:30:36Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The first time you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2016-17/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence Start the design environment by: virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] 23831dedde0ec20270f3362cc8b8068827b82196 2417 2416 2017-04-27T12:38:46Z Fli091 93 Made all the commands copy-and-pasteable wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The first time you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2016-17/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence virtuoso & Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] 0a92ed7b4dde02a3b4077c88f1392efafe3add9e 2426 2417 2017-09-15T11:28:29Z Fli091 93 bash alias for starting virutoso wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2016-17/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To create a command that will do this for you try this command: echo "alias startVirtuoso='source /eda/cadence/2016-17/scripts/analog_flow.sh && cd ~/ihp/cds/ && source sh.cadence && virtuoso &'" >> ~/.bashrc Typing 'startVirtuoso' in the terminal will execute these four commands Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] 768447b67fb4af9d5382d068492f133ba458f535 PHYS321 0 278 2418 2225 2017-04-28T11:50:48Z Fli091 93 Flyttet øvingsoppgaver med IC studio til bunnen og endret overskrift til "gamle" wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Using Vivado ==== * [[Install Vivado 2015.4 with free licens]] * [[VGA controller VHDL code]] * [[Nexys4_Master.xdc]] * [[Using the VGA controller with block ram generator and clock wizard]] === Gamle øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] 594d9d1d532873a1524d3722f21278d6ca89bda5 File:MagneLauritzenMasters.pdf 6 575 2420 2017-06-19T14:28:30Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 SAMPA 0 467 2421 2088 2017-07-05T11:01:21Z Ave082 33 Replaced content with "== SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre>" wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> 908e5080acfa7fe32b0501e98f88fd8505480ca6 Particle Physics group 0 137 2423 2359 2017-08-20T19:05:48Z Nfyal 26 /* Particle Physics */ wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] f52806199fd54d14c43ff9b508753ff03911bd1a File:CERN Team Leader Responsibilities.pdf 6 576 2424 2017-08-20T19:06:12Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ATLASTutorials 0 160 2425 2344 2017-08-22T09:43:48Z Nfyal 26 /* Upcoming tutorials */ wikitext text/x-wiki == Previous tutorials == [[Mini parallab workshop, March 19, 2009]] [[Software workshop, 09/09-09]] [https://indico.cern.ch/event/524296/overview ATLAS software tutorial June 6-10, 2016 at CERN] [https://indico.cern.ch/event/472469/overview ATLAS analysis tutorial, 7-8 February 2016, Oslo ] [https://indico.cern.ch/event/465378/ ATLAS software tutorial ] [https://twiki.cern.ch/twiki/bin/view/AtlasComputing/ComputingTutorials ATLAS computing tutorials twiki] == Upcoming tutorials == [https://twiki.cern.ch/twiki/bin/view/AtlasComputing/SoftwareTutorial?redirectedfrom=AtlasComputing.RegularComputingTutorial Regular ATLAS Computing tutorials wiki] [https://atlasop.cern.ch/twiki/bin/view/Main/ShiftTraining Atlas Control Room Shifts Training] == Possible future tutorials == Some of these could be collected into a workshop in collaboration with Oslo and/or also ALICE. * C++ / ROOT ** Introduction C++ features and syntax for non-experts ** Common C++/ROOT problems and solutions ** A hands on tutorial on how to write a good class * ATHENA ** Running RecExCommon ** Implementing an algorithm ** Making a dual use tool (perhpas too in depth) * Mini Fimm tutorial 2 * Grid tutorial * Statistics / Data Analysis [[Category:Particle Physics]] e6c14d6477bfb7546c40d38ca2105765d77ccae5 TSMC 130nm process 0 461 2427 2370 2017-09-15T11:48:18Z Fli091 93 La til [[Category:Mikroelektronikk]] wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 source /eda/cadence/cadence_init.sh First time you should add the following line to your cds.lib file before starting the design environment. If the ~/cds.lib doesn't exist, just create it. DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf Virtuoso Mixed Signal Design Environment is started by issuing this command: tsmc_cds_start In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. # Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] # Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] d52ba9906fe36a26dabe43f97583661b45062b4c AMS 350nm process 0 460 2428 2037 2017-09-15T12:02:48Z Fli091 93 La til [[Category:Mikroelektronikk]] wikitext text/x-wiki =Cadence design with AMS 350nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs, choose direction and click on the schematic to place it. Create one input and one output. 7. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 8. To check and save the schematic, press 'x' or click the "Check and save" icon. 9. If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 10. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 10. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol- [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] 77d55b347493ded98714ad35095a6d3280b11b97 Category:Mikroelektronikk 14 577 2429 2017-09-15T12:07:16Z Fli091 93 Created category:mikroelektronikk wikitext text/x-wiki This page lists all microelectronics-related pages on this wiki 595c70c11598ac2be935b02c865b785d37a4ca44 Cadence Testbench 0 478 2430 2132 2017-09-15T12:09:33Z Fli091 93 La til [[Category:Mikroelektronikk]] wikitext text/x-wiki = Simulate with corner cases = To simulate with the corner cases in the fabrication process you have to add the corner files provided in the design kit. [[File:Selection_001.png|200px]] Choose "Click to add corner" "Click to add" the model files you need. Ex. The corner files for the MOS transistor in IHP130nm process is located in $IHP_TECH/tech/SG13_MOS/library/spectre/cornerMOSlv_psp.scs After adding the model files needed proceed by adding multiple corners: [[File:corner.png|400px]] The model files contains sections with the different corners. Choose sections and make sure you enable the section "tick box" and name the corner with a corresponding name: [[File:sections.png|400px]] The corners setup also makes it possible to simulate for different temperatures or design variables like VDD and transistor length. Ex. test for three different temperatures with comma as separation: -20,30,80 [[File:complete.png|400px]] [[Category:Mikroelektronikk]] 88475807ac85f18a872b99cc54d478f7a2000128 ADEXL-butterfly-curves 0 555 2431 2306 2017-09-15T12:09:43Z Fli091 93 La til [[Category:Mikroelektronikk]] wikitext text/x-wiki To create a butterfly curve, for example for characterizing SRAM read and hold margins, simulate a single DC sweep (one source, one sweep) on a input. Plot both the input (shows up as a straight line for a linear DC sweep) and the output (shows up as the DC response of your circuit). Have both plots in the same subwindows. go to Axis -> Y vs Y choose the first trace, press ok. go again to Axis -> Y vs Y choose the second trace, press ok. Put both results in the same plot, and you are finished. [[Category:Mikroelektronikk]] ad480252fbeeb787953569e7e78408673f5efe2e BGA lodding 0 295 2432 1229 2017-09-15T12:10:40Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so its listed wikitext text/x-wiki = Reworking = = Martin 09.6 XL machine = == Hardware == === Gas & power === * Open the valves on the Nitrogen bottle, the nitrogen line close to the bottle (red lever), and the nitrogen line close to the soldering machine (red lever). * Open the valve for the pressurized air behind the white wall cabinet (red lever). * Switch on the soldering machine: One switch located on the bottom unit of the soldering machine, on the behind side in the middle. One switch on the DBL (the control unit, on the behind side, a bit to the right. === Unterheater === === DBL === === Placement Arm === ==== Vacuum nozzles ==== ==== Hot air nozzles ==== ==== Lenses ==== === Handling tools === == Software - Easy older == === Desolder === he default profile is chosen with the hot air nozzle that you select. But for the desoldering, to create a profile, I would have a bit longer time for preheating and soldering, because you don't want to end up with a half desoldered BGA ;) The profiling will shorten the time, and we can't use the desoldered FPGA anyway, since we can't reball it. There are different profilers to create a BGA profile (rapid, classic, ...). I don't recall wich one it is, but there is one where it asks you to attach temperature probes to the top side of the BGA, and to the underside (as good as you can get it between the solderballs). You can use the teflon tape to attach the probes, but you should avoid air bubbles close to the probes under the tape. With one of the profilers you can then desolder the BGA, the profile goes through pre heating and soldering state, and there is a button "solder point" which is greyed out in the beginning. During the solder phase this button becomes clickable, and you should use the dentist tools to carefully try to lift the BGA from the board. When the solder is liquid and you can lift the BGA, then you should click "solder point" and take off the BGA. Then comes a cool down phase. Then you should have a customised profile for this BGA and board. ==== Rapid profiling ==== ==== Classic profiling ==== ==== Optimize profile ==== === Despense === If you are done with test runs of placing, and plan to solder, you can use the "Dispense" to apply flux to the board with the foot pedal and the with brush. === Auto Vision Placer === Before you need to choose the placement nozzle that will hold your BGA with a vacuum. It should be square about 1x1 cm for you BGA. Loosing the silver screw on the arm over the placement nozzle and disconnect the rubber tube. Start AVP and choose the lens that your BGA fits in. I think the one that fits for you is called 'Maxi BGA'. Then you mark the outline on the PCB, we got the best results with taking the inside edges of the solder placement marks, but in theory you can also take the lands itself. You need to mark two adjacent corners and the opposing edge. Since there is no mark for the edge, you can take the line from the solder placement marks as far to the inside as you can get. When you are happy with the drawn square, you can turn on the vacuum put the BGA on the tip of the placement nozzle. Then you click "nozzle down" and mark the outline of the BGA, again two corners and one edge. Because of the fuzzy corners where the BGAs where cut/broken off, you might have set the cursor that the corner fits to the clean cut edges. THen you can place the BGA, and check if it aligns correctly. === Solder === After the placing from above, you can select the solder part. Before starting the soldering, you should check that the hot air nozzle aligns properly with the BGA, and you might have to move the arm a bit manually to get it aligned (there is a switch to turn the magnet of on the base of the arm). Then you have to check the height, that the solder nozzle doesn't touch the PCB or the BGA. In order to not bend the placement arm, put your thumb under the placement arm, and push down the red part with your pointer. You can adjust the height with the screw on the top. There shouldn't be more then 1mm between the solder nozzle and the board. Then you can click "Solder" and it will ask you if the underheater support and nozzle is in place. This is the last chance to fix it. When you click next, the machine goes through the solder profile. After soldering you can save the report as pdf somewhere (print to pdf printer). === Clean Pad === With the clean pad function the underheater is on, and you can use the hot air pen from the stand next to the PC to clean the solder rests of the PCB, also using the suction pen from the stand. The lands can come off easily if you are not careful. But if you use a new board to solder, you don't need to do this. == ReBalling == The process of attaching new solderballs to a previously desoldered BGA is called reballing. For this we need a small reballing oven, into which the BGA goes, and a mask that corresponds to the ball layout on the BGA. [[User:Dfe002|Dominik]] 09:03, 26 March 2010 (UTC) [[Category:Mikroelektronikk]] 36e0070b49d80200428e1d7de9a60728bd4afab4 Reflow Soldering 0 454 2433 2009 2017-09-15T12:10:58Z Fli091 93 Removed duplicate and triplicate [[Category:Mikroelektronikk]] wikitext text/x-wiki = Reflow Soldering = This tutorial explains the use of the Techno Print HA-02 reflow oven. A simple and practical step-through procedure is suggested to limit the effort for the first time user. The user manual for the oven can be downloaded from [[Media:Rfo-ha02-manual.pdf]], while a quick search on the web for "reflow soldering" should give some basic knowledge about reflow soldering. The oven should be placed inside a fume cupboard to draw unhealthy and annoying solder fumes away from the person soldering. == When to use it? == Do I really need this oven? Many components can easily be soldered by hand with better results. In general: if you can do it by hand, forget the oven. Some components do not have accessible pads, or they are simply too densely placed for hand soldering. This is when the oven comes in handy, although at the cost of some time and effort. Another example is when you repeat the same soldering process for several identical PCBs, as reflow soldering is a quite fast process once the time and temperature settings are known. == Step 1 - Creating a Time and Temperature Profile == The process of soldering is divided into two zones - "preheat" and "reflow". Time and temperature has to be specified for both these zones to obtain the desired thermal profile, and the settings will differ from PCB to PCB. Temperature can be monitored by attaching a thermocouple to the PCB with Kapton tape. The desired thermal profile is then iteratively found by running the reflow process on the unpopulated PCB several times while adjusting the time and temperature settings of the oven. [[File:Thermocouple.jpg|816px]] Figure 1: Thermocouple used for temperature measurements [[File:Recommended_solder_profile.png|816px]] Figure 2: Recommended solder profile for Hamamatsu MPPC (From Hamamatsu S10362-11 series datasheet) [[File:Meas_solder_profile.png|816px]] Figure 3: Measured solder profile during reflow soldering == Step 2 - Apply Solder Paste == When a reasonable thermal profile is found, the components are attached to the PCB by the use of solder paste. Solder paste can be applied from the dispenser by hand, and it is a good idea to try this a few times on an old PCB to get the right amount of paste. Avoid mixing different solder pastes, and remove any old solder tin from the PCB and the components before applying the paste. Then place the components. == Step 3 - Do it! == You are now ready to do the actual reflow process. Since you now are familiar with the thermocouple, it might be a good idea to attach it to the PCB while doing the actual reflow soldering. In this way you can document that you actually followed the thermal profile when doing the real thing. == Thermal Shielding == If you have a PCB that is already populated, you might want to thermally shield some or all components. This can be done by wrapping the PCB in aluminum foil with a window where you want to solder. Pay attention to the thermal profile in your window, since the foil will make it harder to heat the PCB. [[File:Reflow_example.jpg|816px]] Figure 4: Example of reflow soldering of MPPCs with thermal shielding and monitoring [[Category:Mikroelektronikk]] 33ba53640a213af2ef32f7f160e521c6910bca93 PCI-eksperiment 0 37 2434 74 2017-09-15T12:11:23Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so its listed wikitext text/x-wiki =Laboratory exercise for building and running the HLT-RORC hardware/software= ==Simulation in ModelSim== 1. Extract "HLT-RORC.ZIP", file:/heim/torheim/arkiv/HLT-RORC.ZIP into your working directory. 2. Set environment variable PROJECT_PATH equal to /my_working_directory/HLT-RORC/modelsim. 3. Start modelsim, then open project file HLT-prosjektfil.mpf in directory HLT-RORC/modelsim. 4. Map the simulation libraries. You can do this by typing from the command line (in the following order): <PRE> vlib work # Creating the work library vmap altera_pci /pakke/mgc/altera/vhdl/altera_pci vmap lpm /pakke/mgc/altera/vhdl/220model vmap altera_mf /pakke/mgc/altera/vhdl/altera_mf </PRE> If the compiled simulation libraries have become obsolete, you will have to compile the libraries yourself. This can be done by typing (in the following order): <PRE> vcom &#8211;work altera_mf altera_mf_components.vhd vcom &#8211;work altera_mf altera_mf.vhd vcom &#8211;work lpm 220pack.vhd vcom &#8211;work lpm 220model.vhd </PRE> 5. The mstr_tranx.vhd module contains the master transactions controlling the simulation scenario. To run the simulation with interrupt transfers, set the variable int_or_not equal to 1. To run the simulation with DMA transfers only, set the variable to zero. 6.Now you should compile your testbench with the design into your library work. The testbench could then be loaded by typing <i>vsim -t ps work.testbench</i> from the !ModelSim command line (not specifying the resolution in ps will result in a a fatal error). To run the simulation with 32 bit PCI bus, you could simply type <i>force -freeze /testbench/ack64n 1</i> before running simulation. 7. Run the simulation by typing <i>run ![time in ns]</i>. (You can get rid of all the warnings if you choose <i>Simulate -> Simulation Options -> Assertions -> Ignore assertions for warning</i> from the menu line) ==Synthesizing, technology mapping and transferring the design onto the APEX20KE FPGA== 1. Open Precision RTL Synthesis. Choose <i>File -> New Project</i>. Set the working directory to whatever you want to. 2. Add all the required VHDL files to you project. Make sure local_side.vhd is the last added file (The last added file will automatically be set as top of design). 3. Choose Setup Design to set the following options: APEX 20KE as technology, EP20K400EFC672 as device and -2X for the speed grade. The design frequency shold be 40 !MHz. 4. Click Compile, followed by Synthesize. 5. Close Precision RTL Synthesis. Make sure to anser "Yes" when asked about saving the current implementation. 6. A subdirectory called local_side_impl_1 has now been created in your working directory. Copy the content of local_side_impl_1 to /your_working_directory/HLT-RORC/LS/run_1. Answer yes when questioned to overwrite existing data. 7. Open top_module.qpf from Quartus. Convert the project file to the new Quartus file format if asked to do so. 8. If necessary, choose Tools -> !SignalTap Logic Analyzer and update the SignalTap file to the new file format. 9.Choose Assigments -> Settings -> User Library and add the correct library path (your_working_directory\HLT-RORC\pci_compiler-v2.1.1\lib). The newer versions of the pci core cannot be used, since the APEX20KE has been abandoned from further development. 10. Choose <i>Processing -> Start Compilation</i> to compile the design (this will take some time). 11. Choose <i>Tools -> Programmer</i>. Now choose JTAG as MODE. To make your programming file come through the scan chain, you have to add the device EPM7256B. The EPM device has to be the first on the list. 12. From the file menu you can now choose <i>Create/update -> Create JAM, SVF or ISC file</i>. 13. SSH to pc-rcu.fi.uib.no. Enter the directory where the .jam file has been saved (should be /your_working_directory/HLT-RORC/Quartus) 14. type <i>jamplayer -p378 -aCONFIGURE top_module.jam</i>. In case you receive the following error message: "Error: can't open file "/heim/torheim/rorctest/HLT-RORC/Quartus/top_module.jam", ensure that you have set the correct user privileges for HLT-RORC directory including its files and folders. You can do this by typing chmod -R 666 HLT-RORC. 15. Reboot your system. The HLT-RORC should now be ready and running. On pc-rcu.fi.uib.no, BAR0 will probably be mapped to FB400000. This can be checked by typing <i>/sbin/lspci -v</i> from the command line. ==Verifying the implementation with the Vanguard Logic Analyzer== 1. Start the Analyzer (BusView.exe) 2. Choose <i>File -> New -> Analyzer Setup</i> 3. Add this event: PCI0 in transfer mode with address FD0xxxxx. 4. Add this trigger: <PRE> Samling in TRANSFER mode Store (ALL) If (PCI0) then Trigger at 50% of trace Endif </PRE> 5. Cut and paste this text into an empty text file and save the file as testbench.scr: <PRE> f FB400000 FB400000 FD000000 f FB400004 FB400004 00000400 f FB400008 FB400008 FD000000 f FB40002C FB40002C FD000000 f FB400030 FB400030 FD000000 f FB400018 FB400018 00000011 f FB400020 FB400020 00000019 f FB400024 FB400024 00000001 f FB400024 FB400024 00000000 f FB400028 FB400028 AFFED00F </PRE> NB! This script assumes that the base address for BAR0 in the HLT-RORC is FB400000. It also assumes that the PCI base address for the Vanguard local target memory is FD000000. 6. Choose <i>Exerciser -> Script -> Load</i> and enter testbench.scr. 7. Choose <i>Exerciser -> Target</i> and enable the local target memory. Check that the Memory Window Address is consistent with the memory addresses in the script file. 8. Enter F9 to start sampling on the PCI bus. Then enter F10 to run the exerciser script. The exerciser script now runs the same scenario as in the VHDL testbench. If the HLT-RORC-4 design is working, the analyzer should be triggered by the HLT-RORC writing bursts of data words to the local memory. 9. Enter Alt-F9 to halt the analyser after the analyzer has been been triggered. Then choose Exerciser -> Local -> Display to examine the data written to local target memory by HLT-RORC. ==Verifying the implementation with the software== NB! Step 1-2 can only be done by a user with root permission. The first steps should therefore be taken care of by the supervisor, so the students doing this exercise can jump directly to point 4. 1. To run the software, a kernel module called psi has to be inserted into the kernel. The PSI tar.gz file can be downloaded from http://www.kip.uni-heidelberg.de/ti/HLT/software/software.html. If you download PSI version 0.8.2 from august 2003, you will have to patch psi_mod.c to make it compile on newer kernels. A patchfile called psi_mod.patch is located in the HLT-RORC directory. Before compiling, remember to change the TOPDIR variable in the Makefile and remove -DWITHBIGPHYS if bigphys is not compiled into the kernel (and it probably isn't). Now you can install the module by entering directory psi-0.8.2\src\driver.linux and typing (in the following sequence): <PRE> make clean make module make install make dev (or typing manually mknod /dev/psi c 100 0) chmod 666 /dev/psi (to give normal users permission to access the device file) </PRE> The module can now be installed by typing <i>insmod psi.o</i> (You will need root permissions to do this. If you want to use my precompiled binaries instead of compiling yourself, make sure to boot up the computer with the 2.4.20custum-bigphys kernel. You can check which kernel is running by typing 'uname -a'.) Make sure that you are running with the same kernel when loading the module as when compiling the module, unless the modules wont work. To compile the PSI API, go to directory psi-0.8.2\src\libpsi.linux and type <i>make</i>. 2. Enter directory HLT-RORC/src. If necessary, you will have to edit Makefile and Rules.make before compiling. Then run <i>make all</i> followed by <i>make install</i>, <i>mknod /dev/irqsignal c 120 1</i> and <i>chmod 666 /dev/irqsignal</i>. Now you can insert the irqsignal module by typing <i>insmod irqsignal major=120</i>. 3. Enter directory HLT-RORC/example. Compile the included files by typing make generate_irq. Remember to change the PSIDIR variable in the Makefile before compiling. 4. Run the compiled program generate_irq. The program will set up the HLT-RORC card to start interrupt-driven DMA-transfers. A signal handler located in the generate_irq program will respond to the interrupts. The program can be terminated by pressing Ctrl-C. 5. To observe the transactions with the Vanguard Analyzer, use the same events and trigger conditions that were shown in the previous example. [[Category:Mikroelektronikk]] 8d0073b8205b7e9993f2d8a215c7446cf4858dd9 SmartFusion2 0 416 2435 1980 2017-09-15T12:11:38Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so its listed wikitext text/x-wiki =Installation process= ==Download== Download from: http://www.actel.com/download/software/liberosoc/files.aspx?os=WIN ==Get a free 1 year license== Goto: http://www.actel.com/Portal/DPortal.aspx and choose "Libero Gold Node Locked for Windows" You need to register an account if you have not allready done so. ===Find out your Disk Serial Number=== Windows 8: 1. Open up a command prompt window by right clicking anywhere on the Start Screen and then click on "All apps". Scroll to the right until you find the "Windows System" section heading, and click on the "Command Prompt" tile. 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. Windows XP / Windows Vista / Windows 7: 1. Open up a command prompt window (Start Menu > All Programs > Accessories > Command Prompt). 2. Type in: vol. 3. The Volume Serial Number is the Disk Serial Number. It will take a couple of hours before the license arrives. ==Install== Start LiberoSoCv11 * Select Install Libero SoC (not the SA) * Select to install ALL ** Synplify Pro ** SoftConsole ** Synphony ** Identify ** ModelSim ** Fusion ** Igloo, Igloo nano ** Igloo Plus ** Iglooe ** ProAsic3 ** ProAsic3E ** ProAsic3L ** SmartFusion ** SmartFusion2 Apply and install license if you not already have a license installed. Start up Libero and select the tab marked "Catalog" in the bottom left. Press the button above saying to download new cores. =Tutorials= Programming of the SF2 takes a loooong time, even before the activity light starts to flash on the FlashPro4. Don't despair, the program is probably not crashed. The tutorials were made for an early version of Libero11, but the text has somewhat been updated to be in line with the release version of Libero11. In case of doubt, refer to the text and use common sense. Some of the demo C code has also changed. The tutorials are made for the SF2-STARTER-KIT-ES-2 which contains the BGA896 SF2 engineering sample (ES stamped on bottom left on chip). Newer starterkits may contain other devices and the device configuration would thus be different. The small white usb stick in the SF2 starter kit is a wifi device. Most of the "answers for questions" strongly depend on the chip and the version of the software and thus are not correct. For the tutorials using the rs232, don't use the reset button as it will garble the text. Relaunch the debugger instead. Don't use spaces in the path to were you keep the design files as Modelsim handles this badly. The tutorial files can be found on mikroserver1 in the folder /prog/cadence/SF2_tutorial Other designfiles and documents can be found here: http://emcraft.com/products/153 Add tips or corrections for tutorials below. ==Tutorial 1: SF2 fabric== ==Tutorial 2: SF2 ARM Cortex-M3 == ==Tutorial 2: SF2 USB== The mass storage test didn't work with a Sandisk cruizer 4GB micro. =Use of Questasim with SF2 cores= * Rightclick in the library pan of Questasim and choose new->Library. * Choose "A map to an existing library". * Set Library name to "SmartFusion2" and path to "c:/Microsemi/Libero_v11.1/Designer/lib/modelsim/precompiled/vhdl/SmartFusion2" or correct it to the place where you installed libero. * Include the library in the files where you need SF2 cores The same applies for other actel devices. =Libero errors, warnings and problems= * If you get "Warning: CMP008: module_name is not an Actel cell defined in the cell library." it means the mentioned module was not included in the synthesis and thus assumed to be an Actel standard module. Rightclick synthesis and select "Organize input files->Organize source files" select the mentioned module and press add. * Generate programming data fails without explanation: Constraint format has changed between Libero versions. Generate a new constraint file using the I/O editor based on the data in the old constraint file. * When a project is opened, if there is a message saying that the project is already open in another instance of Libero, go to the folder ''tooldata'' in the project directory and delete a file called ''libero.xyzv''. Where xyzv is some four digit number. [[Category:Mikroelektronikk]] fb8dea9674c0df31017204cfb59fb5458b63db6c XJDeveloper 0 410 2436 2094 2017-09-15T12:14:16Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so its listed. Removed invalid category wikitext text/x-wiki == XJDeveloper == Dette er ei innføring i XJDeveloper. Tilhøyrande dokumentasjon er meint brukt til XJDemo Board versjon 1.2. === Dokumentasjonsmappa === Dokumentasjonsmpappa inneheld: * Krinsskjema * Bilete av demokort v.1.2. * Demokort-netliste * Diverse test-filer * Device-filer === Sette opp kortet === Det fyrste som gjerast er å kople demokortet til datamaskina gjennom XJ Link. Bruk ein av USB-inngongane på baksida av maskina. Deretter må det lagast ei prosjektmappe, som skal innehalde alle filene som vert laga. Mappe-plasseringa speler inga rolle. For å starte XJDeveloper: start>Programs>XJTAG 2.4>XJDeveloper. Lag eit nytt prosjekt, og lagre det i prosjektmappa. Gje prosjektet namnet "demo". Når dette er gjort, dukker dialogboksen "Add board" automatisk opp. I denne boksen gjev du kortet namn, og du gjev XJDeveloper netlista til demokortet. Gje kortet namnet "XJDemo". Netlista finn du i dokumentasjonsmappa - demo.net I tillegg har vi ei BOM-fil, som gjev XJDeveloper tilleggsinformasjon om komponentane på kortet. Denne fila er ikkje strengt naudsynt, men er nyttig. I dokumentasjonen finn du BOM-fila - demo.bom Legg til BOM-fila under BOM-settings. Etter å ha trykka next, set du tredje kolonne til å vere "Device Reference", fjerne kolonne "Value", og siste kolonne til "Device Description". Save. Under Power/Ground Nets i Setup-menyen i venstre marg er det to nett, 3.3V og GND. Dra desse to neta over i riktig kolonne til høgre. No veit XJTAG kva nett som er power og jord, og vil ikkje forsøke å skrive til desse. ==== Identifisere komponentane ==== Neste steg er å identifisere JTAG-kjeden. Trykk på add i Chain Setup. Til høgre for TDI, trykker du på select og vel CN1, pin 5. Trykk OK. Så kjem IC2.B3 opp i Select Next Pin-vinduet. Dra denne ned i JTAG Devices-lista. Trykk på Browse, og velg fila med same namn som IC2, altså XC9536XL_cs48.bsd Gjer det same med IC3.1, 3032at44.bsd. Begge desse filene finst i dokumentasjonsmappa. Neste steget er ein resistor, R49. Dra denne ned i JTAG-Devices-lista, men velg Connect device i den øvste fana. Så vel du Create file. Namngje fila Resistor, og connect 1 til 2. Til slutt kjem IC1.13. Høgreklikk og set denne til TDO. Save. No har vi etablert JTAG-kjeden. Deretter skal vi kategorisere non-JTAG-devices. Under Categorise Devices-fana i venstremargen, finn vi alle komponentane(devices), og ingen er endå kategoriserte. * Risistorane som er markerte med "Suggested Series Resistors" kategoriserer vi som passive komponentar. Dra alle over i "Passive", og velg Resistor.pdd som allereie er laga. * Alle jumperane på krinsen lar vi og vere passive. Gje jumperane[1,2,3,5,6] namn [jumper1,jumper2,...,jumper6] når vi lager filer til desse. For jumper[1,2,3] ser vi frå krinsteikninga at desse er meint kopla. Kople difor pinane 1-2,3-4,5-6,7-8 for desse tre jumperane. Jumper5 og jumper6 skal vere opne. * Alle pull-resistorane kategoriserer vi óg som passive. Når vi skal lage PDD-filer for desse, gjer vi som ved serie-motstanden, bortsett frå at vi skiftar frå Connect->Pull. Connect 1-2. ** No er det dukka opp ein siste resistor, R26. Legg denne til i resistor.pdd. * Under Ignore Devices legg vi kondensatorane, connectorane og "Other Resistors". I tillegg legg vi Switch1 under ignore(denne kjem vi attende til). * Under Test Devices legg vi til IC4,IC5, alle diodane, SW2 og SW3. IC4 gjev vi namnet EEPROM, IC5 gjev vi namnet SRAM, diodane gjev vi namnet LED, SW2 gjev vi namnet pushbutton1 og SW3 gjev vi namnet pushbutton2. * Under Logic Devices legg vi IC1. Frå krinsteikninga finn vi kva komponent IC1 er, og gjev XJDeveloper informasjon om det. Det neste steget er å identifiserer tilkoplingspinnane. Under Pin Mapping ser vi JTAG connectoren. Frå krinsteikninga finn vi korleis denne skal bestemmast(CN1). Dei pinnane som ikkje er gjevne namn i krinsteikninga, lar vi vere "input". === Testing === Det siste steget er å klargjere for test. Under Run and Deploy, finn ein fana XJRunnet Setup. Velg New>Add Global Function>CONNTEST. Gje testen eit fornuftig namn. Save. For å køyre testane som er sett opp under XJRunner-fana, trykk på Run Test-fana, og køyr testen. Når vi tester, ser vi at vi får opp ein short mellom to "created" net på IC2. Desse to neta finst på krinsen, men er ikkje med i netlista. For å be XJDeveloper sjå vekk i frå denne feilen, kople dei to neta saman. Det kan gjerast under fana Connections i venstremargen. Trykk på Add, velg Pin to Pin, og kople dei to neta saman. For å komme unna problemet med at GP1 er stuck at 1/0, går vi inn på Constant Pins-fana og set denne pinen til anten High/Low. Hugs å fysisk sett brytaren SW1 anten High/Low. Viss alt er sett riktig opp, skal vi ikkje lenger få feilmeldingar når vi køyrer testen. For å gje oss høve til å lage feil, er kortet utstyrt med jumperar. Sjå på krinsteikninga, og lag stuck at 0/1, kortslutningsfeil og brotfeil. ==== Minnetest(SRAM) ==== XJDeveloper har laga ei fil SRAM.xje frå informasjonen vi har gjeve programmet. For å kunne bruke ein ferdiglaga, enkel minnestest, modifiserer vi denne fila til å passe med testen. I dokumentasjonsmappa finn du fila SRAM.txt. Erstatt innhaldet i SRAM.xje med SRAM.txt. Den første, og enkle, minnetesten, ligg lagra i dokumentasjonsmappa - SRAM_test.txt. Kopier innhaldet i denne fila, og lim det inn Test Editor. Test Editor er eit av vindauga under Test Device Files-fana i venstremargen. Save. Lag så ein ny test i XJRunner-fana. Velg Add Device Function>IC5>Test. Gje testen eit fornuftig namn. XJTAG har vedlagt demokortdokumentasjonen gjeve oss ein meir utfyllande minnetest. Denne er vedlagt i dokumentasjonsmappa, og heiter memtestSRAM.xje. For å bruke denne, høgreklikker vi på IC5 i Categorised Devices>Configure>Other Device File>SRAM_SOP24.xje. Dette legg automatisk memtestSRAM.xje til som tilleggskode. No kan testen køyrast på nytt. Bruk jumperane kring minnekrinsen til å lage feil. ==== Flash-test ==== Hvis du får opp følgende feilmelding under kjøring av flash-test: <span style="color:red"> memtestFlash.xje(148): Zero is an invalid argument to LOG. IC3.TestDestructive failed >>>> FAILED <<<< </span> Er dette fordi initialiseringsfunksjonen ''Init();'' ikke er inkludert i "Test Destructive"-funksjonen. Dette kan fikses ved å legge inn ''Init();'' manuelt i filen ''AMD_Flash.xje'', som du finner i XJDeveloper: Velg Test Device Files (Under fanen ''Setup'', til høyre i XJDeveloper) -> AMD Flash 48-Pin TSOP 4Mb x8.xje (Under fanen ''Navigator'') -> AMD_Flash.xje Bruk ctrl+F for søk og skriv inn "TestDestructive()". Skriv inn ''Init();'' rett under linjen ''result := RESULT_PASS'', og trykk lagre. For å gjennomføre Non-Destructive test må dette også gjøres i "TestNonDestructive()"-funksjonen i samme fil. ==== EEPROM-test ==== Vedlagt i dokumentasjonen er fila 24LC23A.xje. Dette er testfila til IC4 - EEPROM. Kopier innhaldet i 24LC23A.xje inn i "Test Editor" under EEPROM i venstremargs-fana Test Device Files. Save. Då får ein to feilmeldingar, fordi funksjonane testen refererer til manglar. Desse finst i IIC.xje, som òg ligg i dokumentasjonen. Under Additional Code Files legg du IIC.xje til EEPROM. Save. På same måte som for SRAM-testen, må vi lage ein EEPROM-test under XJRunner-fana. No kan du køyre testen på nytt. ---- Lagt til forklaring på feil i flash-test og forslag til retting [[Category:Mikroelektronikk]] cb1e7b39e5acfdfb4d5e487d3ecadc2d91ba699a Cadence Virtuoso setup 0 415 2437 2103 2017-09-15T12:15:10Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so its listed wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths){{-}} Run "source europractice_installer.sh" and wait until done.{{-}} Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang="tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </source> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh ln -s /prog/cadence/cadence_$YEAR\_init.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh *sysstat [[Category:Mikroelektronikk]] 0f6e5b35d80260f6360335b7bf79a1c94eed281b 2440 2437 2017-09-15T12:31:18Z Fli091 93 Fli091 moved page [[Cadence]] to [[Cadence Virtuoso setup]]: Two pages named cadence on this wiki. Giving them explisit names wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths){{-}} Run "source europractice_installer.sh" and wait until done.{{-}} Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang="tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </source> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh ln -s /prog/cadence/cadence_$YEAR\_init.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh *sysstat [[Category:Mikroelektronikk]] 0f6e5b35d80260f6360335b7bf79a1c94eed281b Gitlab 0 568 2438 2387 2017-09-15T12:15:36Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so its listed wikitext text/x-wiki == Software repository == We use the '''gitlab''' server hosted by IT of University of Bergen. Further information: * [https://docs.gitlab.com/ce/gitlab-basics/README.html Gitlab basics] * [https://docs.gitlab.com/ee/workflow/README.html Gitlab workflow] == Development workflow == Every logged-in user can access the main repository, however only a small group of administrators has write access. To contribute, a user creates a ''fork'' from the repository. This is a copy where a single developer or a group of developers have full access. The main repository has the following branches: * '''production''': the latest production code, in this branch we have release tags * '''master''': the latest stable release * '''dev''': the development branch In addition to those main branches there can be ''feature'' branches where development happens detached from the main branches. A ''feature'' branch is based on the ''dev'' branch and has a limited lifetime. === Creating a project fork === A ''project fork'' or ''repository fork'' is a copy of the original repository where a user or a group of users has/have full control. All development in our project is carried out in the individual forks. Branches of project forks are merged back into the main repository by '''merge requests''', preferably via '''fast forward''' merges. That requires developers to rebase project forks to the main repository and resolve all conflicts before requesting a merge. [https://docs.gitlab.com/ce/gitlab-basics/fork-project.html How to fork a project] Your repository fork is your sandbox, you can do whatever you want. Unless you have your own rules at hand right now you can apply the following: * leave the ''master'' branch in sync with the main repository, do not make commits to it * commit your changes to the ''dev'' branch * if you start a new feature, and it's expected to take a while, make a ''feature'' branch, e.g. ''dev-feature'' and give the feature a name * synchronize regularly to the main repository by rebasing === Making local development copy === Clone directly from your development fork, replace ''user'' appropriately. '''Note''': the gitlab offers two modes for the link to be cloned, you can choose ''ssh'' (default setting) or ''https''. If you can not clone with the proposed default link, try option ''https://''. git clone https://user@gitlab.uib.no/asim/asdc.git This repository will get the name ''origin'' in your local clone. If you have cloned already from the main repository, the upstream link can be changed as follows cd <reponame> git remote set-url origin https://user@gitlab.uib.no/asim/asdc.git === Pushing to development fork === Once you have added commits to e.g. the '''dev''' branch, those commits can be ''pushed'' upstream to the fork. git push origin dev === Pull/Merge request === All updates to the main repository are made via ''merge requests'' (github refers to them as ''pull requests''). A merge request requires the code update to be in a mergable branch in a development fork. Merge request are also used widely to share ''work-in-progress'' with your colleagues and for code reviews. Mark such Merge request with "'''WIP:'''". ==== Preparation ==== In order to avoid conflicts, first the fork has to be updated to the main repository. The idea behind this is that all potential conflicts can be resolved by the developer with the best knowledge about the matter, while the maintainer can simple merge ''fast-forward''. ==== Example workflow for a Merge request ==== # Go to your gitlab user space at [https://gitlab.uib.no/user https://gitlab.uib.no/user] (replace ''user'' appropriately. # Find the project fork, e.g. in the list of projects associated with you from the upper main menu. # In the line with the many columns regarding the repository, click on the "+"-symbol on the right hand side and choose "New merge request" # Select project and branch for both source and target, and click "Compare branches and continue" # Review the list of commits in this merge request, give it a descriptive title and description, pick an assignee # Submit the merge request === Importing an external package === The project will use a couple of external packages which are hosted in a different master repository. Copies of such external packages can be added to the gitlab server under our project group to provide a consistent package. Here is a proposed workflow for importing a package which is already hosted in git. # Create new repository in the asim group or ask for creation, lets call it ''newPackage'' # Fork the repository to your user space # Clone the package you want to import #:<pre> git clone <some_external_link> newPackage # we give it the new name</pre> #:<pre> cd newPackage</pre> # Redirect upstream URL to the fork in your gitlab user space #:<pre> git remote set-url origin https://user@gitlab.uib.no/user/newPackage.git</pre> # Now make a forced push (option ''-f'') to import the repository to your fork #:<pre> git push -f origin</pre> # Create merge request to branch ''import'' (if not existing, ''master'' or any other appropriate branch) by following the instructions [[Documentation#Pull/Merge request | Pull/Merge request]] [[Category:Mikroelektronikk]] 4990229e02bbdc29b64a035179bc32894738e50f Bitvis UVVM VHDL Verification Component Framework 0 481 2439 2412 2017-09-15T12:16:22Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so its listed wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [http://bitvis.no/products/uvvm-vvc-framework/ Bitvis web page]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wr <= '0'; sbi_if.rd <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] 228ff7db36acbd0ed60c578d2feeafc5296ab8ab Cadence 0 578 2441 2017-09-15T12:31:19Z Fli091 93 Fli091 moved page [[Cadence]] to [[Cadence Virtuoso setup]]: Two pages named cadence on this wiki. Giving them explisit names wikitext text/x-wiki #REDIRECT [[Cadence Virtuoso setup]] aced73ef573ce9e5a0a92a33de531f54af852805 Cadence Virtuoso overview 0 38 2442 2307 2017-09-15T12:32:10Z Fli091 93 Fli091 moved page [[Cadence Virtuoso]] to [[Cadence Virtuoso overview]]: Two pages named cadence on this wiki. Giving them explisit names wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] 363f9e5f66a2697461289d792300bf9b6ec9540f Cadence Virtuoso 0 579 2443 2017-09-15T12:32:10Z Fli091 93 Fli091 moved page [[Cadence Virtuoso]] to [[Cadence Virtuoso overview]]: Two pages named cadence on this wiki. Giving them explisit names wikitext text/x-wiki #REDIRECT [[Cadence Virtuoso overview]] 1a98d0ae6a1dd0d03a1807d45de75e69a0fb33ad Template:Navbox 10 580 2445 2444 2017-09-15T13:04:09Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <includeonly>{{#invoke:Navbox|navbox}}</includeonly><noinclude> {{Documentation}} </noinclude> fe9b964401f895918ee4fe078678f1722a3c41ec Template:Clear 10 581 2447 2446 2017-09-15T13:04:09Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <div style="clear:{{{1|both}}};"></div><noinclude> {{documentation}} </noinclude> 38bab3e3d7fbd3d6800d46556e60bc6bac494d72 Template:Documentation 10 582 2449 2448 2017-09-15T13:04:09Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{#invoke:documentation|main|_content={{ {{#invoke:documentation|contentTitle}}}}}}<noinclude> <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> ce7fd93f18c46b4fa871bf679afd05cbda72d8c4 Template:Documentation subpage 10 583 2451 2450 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <includeonly><!-- -->{{#ifeq:{{lc:{{SUBPAGENAME}}}} |{{{override|doc}}} | <!--(this template has been transcluded on a /doc or /{{{override}}} page)--> </includeonly><!-- -->{{#ifeq:{{{doc-notice|show}}} |show | {{Mbox | type = notice | style = margin-bottom:1.0em; | image = [[File:Edit-copy green.svg|40px|alt=|link=]] | text = '''This is a [[Wikipedia:Template documentation|documentation]] [[Wikipedia:Subpages|subpage]] for {{{1|[[:{{SUBJECTSPACE}}:{{BASEPAGENAME}}]]}}}'''.<br />It contains usage information, [[Wikipedia:Categorization|categories]] and other content that is not part of the original {{#if:{{{text2|}}} |{{{text2}}} |{{#if:{{{text1|}}} |{{{text1}}} |{{#ifeq:{{SUBJECTSPACE}} |{{ns:User}} |{{lc:{{SUBJECTSPACE}}}} template page |{{#if:{{SUBJECTSPACE}} |{{lc:{{SUBJECTSPACE}}}} page|article}}}}}}}}. }} }}<!-- -->{{DEFAULTSORT:{{{defaultsort|{{PAGENAME}}}}}}}<!-- -->{{#if:{{{inhibit|}}} |<!--(don't categorize)--> | <includeonly><!-- -->{{#ifexist:{{NAMESPACE}}:{{BASEPAGENAME}} | [[Category:{{#switch:{{SUBJECTSPACE}} |Template=Template |Module=Module |User=User |#default=Wikipedia}} documentation pages]] | [[Category:Documentation subpages without corresponding pages]] }}<!-- --></includeonly> }}<!-- (completing initial #ifeq: at start of template:) --><includeonly> | <!--(this template has not been transcluded on a /doc or /{{{override}}} page)--> }}<!-- --></includeonly><noinclude>{{Documentation}}</noinclude> a1dda2f5e5ddf9097546af5acd7a7bad14fdac9d Template:FULLBASEPAGENAME 10 584 2453 2452 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{#if: {{Is subpage namespace | {{#if:{{{1|}}}|{{NAMESPACE:{{{1}}}}}|{{NAMESPACE}}}} }} | {{#if: {{#titleparts:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|-1}} | {{#titleparts:{{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}}|-1}} | {{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}} }} | {{#if:{{{1|}}}|{{{1}}}|{{FULLPAGENAME}}}} }}<noinclude> {{documentation}} </noinclude> 9eeb1b689ce36891a0eaa40ee74d8207a9c95e09 Template:For 10 585 2455 2454 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <includeonly>{{#invoke:For|For}}</includeonly><noinclude> {{Documentation}} </noinclude> 3f70c0fa7cd736071e7c6e7dcd90ff3704df26bb Template:Hatnote 10 586 2457 2456 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <includeonly>{{#invoke:Hatnote|hatnote}}</includeonly><noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 4a1d1028d07c9056022807a96051e1c82cf2a1c7 Template:High-risk 10 587 2459 2458 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{ombox | type = content | image = [[File:Ambox warning orange.svg|40px|alt=Warning|link=]] | imageright = | text = '''This {{ #switch:{{NAMESPACE}} |Module=Lua module |#default=template }} is used on <span class="plainlinks">[https://tools.wmflabs.org/templatecount/index.php?lang=en&namespace={{NAMESPACENUMBER:{{FULLPAGENAME}}}}&name={{urlencode:{{ #switch: {{SUBPAGENAME}} | doc | sandbox = {{BASEPAGENAME}} | #default = {{PAGENAME}} }}}} {{#if:{{{1|}}}|{{formatnum:{{{1}}}}}|a very large number of}} pages]</span>.'''<br />To avoid large-scale disruption and unnecessary server load, any changes to this {{ #switch:{{NAMESPACE}} |Module=module |#default=template }} should first be tested in its [[{{ #switch: {{SUBPAGENAME}} | doc | sandbox = {{SUBJECTSPACE}}:{{BASEPAGENAME}} | #default = {{SUBJECTPAGENAME}} }}/sandbox|/sandbox]] or [[{{ #switch: {{SUBPAGENAME}} | doc | sandbox = {{SUBJECTSPACE}}:{{BASEPAGENAME}} | #default = {{SUBJECTPAGENAME}} }}/testcases|/testcases]] subpages{{ #switch:{{NAMESPACE}} |Module=. |#default=&#32;or in your own [[Wikipedia:Subpages#How to create user subpages|user subpage]]. }} The tested changes can then be added to this page in a single edit. Please consider discussing any changes {{#if:{{{2|}}}|at [[{{{2}}}]]|on the [[{{ #switch: {{SUBPAGENAME}} | doc | sandbox = {{TALKSPACE}}:{{BASEPAGENAME}} | #default = {{TALKPAGENAME}} }}|talk page]]}} before implementing them. }}<noinclude> {{Documentation}} <!-- Add categories to the /doc subpage; interwikis go to Wikidata, thank you! --> </noinclude> 8d595acf61df4b1c13b280d8bb1d7f971259c4ea Template:Is subpage namespace 10 588 2461 2460 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki #REDIRECT [[Template:Ns has subpages]] 2399d659a817ec9b4df84fe4e556039d08e809a8 Template:Lua 10 589 2463 2462 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <includeonly>{{#invoke:Lua banner|main}}</includeonly><noinclude> {{Lua|Module:Lua banner}} {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> dba3962144dacd289dbc34f50fbe0a7bf6d7f2f7 Template:Main 10 590 2465 2464 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{#invoke:main|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> a7952a0ddabebcef9371e9783f0fed2425a59187 Template:Navbar 10 591 2467 2466 2017-09-15T13:04:10Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <includeonly>{{#invoke:Navbar|navbar}}</includeonly><noinclude> {{documentation}} </noinclude> 868e3566b7e8a9a5a7f3dac75cac429c47de10d3 Template:Navbox/doc 10 592 2469 2468 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{documentation subpage}} <!-- Categories go where indicated at the bottom of this page, please; interwikis go to Wikidata (see also: [[Wikipedia:Wikidata]]). --> {{#ifeq:{{FULLPAGENAME}}|Template:Navbox|{{high-risk| 2450000+ }}}}<includeonly> {{lua|Module:Navbox}}{{Template display|nomobile}}</includeonly> {{Navbox suite}} {{for|vertically-aligned navigation|Template:Sidebar}} This template allows a [[Wikipedia:Navigation template|navigational template]] to be set up relatively quickly by supplying it with one or more lists of links. It comes equipped with default styles that should work for most navigational templates. Changing the default styles is possible, but not recommended. Using this template, or one of its "Navbox suite" sister templates, is highly recommended for standardization of navigational templates, and for ease of use. {{Navbox visibility}} == Usage == Please remove the parameters that are left blank. <pre style="overflow: auto;">{{Navbox | name = {{subst:PAGENAME}}{{subst:void|Don't change anything on this line. It will change itself when you save.}} | title = | listclass = hlist | state = {{{state|}}} | above = | image = | group1 = | list1 = | group2 = | list2 = | group3 = | list3 = <!-- ... --> | below = }} </pre> == Parameter list == {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | title = {{{title}}} | above = {{{above}}} | image = {{{image}}} | group1 = {{{group1}}} | list1 = {{{list1}}} | group2 = {{{group2}}} | list2 = {{{list2}}} | list3 = {{{list3}}} ''without {{{group3}}}'' | group4 = {{{group4}}} | list4 = {{{list4}}} | below = {{{below}}} <br /> See alternate navbox formats under: [[#Layout of table|''Layout of table'']] }} The navbox uses lowercase parameter names, as shown in the box (''above''). The required ''name'' and ''title'' will create a one-line box if other parameters are omitted. Notice "group1" (etc.) is optional, as are sections named "above/below". {{clear}} The basic and most common parameters are as follows (see [[#Parameter descriptions|below]] for the full list): : <code>name</code> – the name of the template. : <code>title</code> – text in the title bar, such as: <nowiki>[[Widget stuff]]</nowiki>. : <code>listclass</code> – a CSS class for the list cells, usually <code>hlist</code> for horizontal lists. Alternatively, use bodyclass for the whole box. : <code>state</code> – controls when a navbox is expanded or collapsed. : <code>titlestyle</code> – a CSS style for the title-bar, such as: <code>background: gray;</code> : <code>groupstyle</code> – a CSS style for the group-cells, such as: <code>background: #eee;</code> : <code>above</code> – text to appear above the group/list section (could be a list of overall wikilinks). : <code>image</code> – an optional right-side image, coded as the whole image. Typically it is purely decorative, so it should be coded as <code><nowiki>[[File:</nowiki><var>XX</var><nowiki>.jpg|80px|link=|alt=]]</nowiki></code>. : <code>imageleft</code> – an optional left-side image (code the same as the "image" parameter). : <code>group<sub>n</sub></code> – the left-side text before list-n (if group-n omitted, list-n starts at left of box). : <code>list<sub>n</sub></code> – text listing wikilinks using a [[Help:Lists|wikilist]] format. : <code>below</code> – optional text to appear below the group/list section. == Parameter descriptions == The following is a complete list of parameters for using {{tl|Navbox}}. In most cases, the only required parameters are <code>name</code>, <code>title</code>, and <code>list1</code>, though [[Template:Navbox/doc#Child navboxes|child navboxes]] do not even require those to be set. {{tl|Navbox}} shares numerous common parameter names with its sister templates, {{tl|Navbox with columns}} and {{tl|Navbox with collapsible groups}}, for consistency and ease of use. Parameters marked with an asterisk (*) are common to all three master templates. === Setup parameters === :; ''name''* :: The name of the template, which is needed for the "V&nbsp;• T&nbsp;• E" ("View&nbsp;• Talk&nbsp;• Edit") links to work properly on all pages where the template is used. You can enter <code><nowiki>{{subst:PAGENAME}}</nowiki></code> for this value as a shortcut. The name parameter is only mandatory if a <code>title</code> is specified, and the <code>border</code> parameter is not set, and the <code>navbar</code> parameter is not used to disable the navbar. :; ''state''* <span style="font-weight:normal;">[<code>autocollapse, collapsed, expanded, plain, off</code>]</span> :* Defaults to <code>autocollapse</code>. A navbox with <code>autocollapse</code> will start out collapsed if there are two or more tables on the same page that use other collapsible tables. Otherwise, the navbox will be expanded. For the technically minded, see [[MediaWiki:Common.js]]. :* If set to <code>collapsed</code>, the navbox will always start out in a collapsed state. :* If set to <code>expanded</code>, the navbox will always start out in an expanded state. :* If set to <code>plain</code>, the navbox will always be expanded with no [hide] link on the right, and the title will remain centered (by using padding to offset the <small>V&nbsp;• T&nbsp;• E</small> links). :* If set to <code>off</code>, the navbox will always be expanded with no [hide] link on the right, but no padding will be used to keep the title centered. This is for advanced use only; the "plain" option should suffice for most applications where the [show]/[hide] button needs to be hidden. : To show the box when standalone (non-included) but then auto-hide contents when in an article, put "expanded" inside {{tag|noinclude|p}} tags. This setting will force the box visible when standalone (even when followed by other boxes), displaying "[hide]", but then it will auto-collapse the box when stacked inside an article: :: <code><nowiki>| state =&nbsp;</nowiki></code>{{tag|noinclude|content=expanded}} : Often times, editors will want a default initial state for a navbox, which may be overridden in an article. Here is the trick to do this: :* In your intermediate template, create a parameter also named "state" as a pass-through like this: :: <code><nowiki>| state = {{{state<includeonly>|your_desired_initial_state</includeonly>}}}</nowiki></code> :* The {{tag|includeonly|o}}<code>|</code> will make the template expanded when viewing the template page by itself. ::* Example 1: {{tl|Peso}} with ''autocollapse'' as the default initial state. [[Catalan peseta]] transcludes it and has only one navbox; thus, the peso navbox shows. [[Chilean peso]] has more than two navboxes; thus, the peso navbox collapses. ::* Example 2: {{tl|Historical currencies of Hungary}} with ''expanded'' as the default initial state, as such: :::<code><nowiki>| state = {{{state<includeonly>|expanded</includeonly>}}}</nowiki></code> :::All transcluding articles show the content by default, unless there is a hypothetical article that specifies <code><nowiki>{{templatename|state=collapsed}}</nowiki></code> when transcluding. ::* Example 3: {{tl|Tourism}} with ''collapsed'' as the default initial state, as such: :::<code><nowiki>| state = {{{state<includeonly>|collapsed</includeonly>}}}</nowiki></code> :::All transcluding articles will show the template as collapsed by default, but the template will still be uncollapsed when displayed on its own page. :* The template {{tl|Collapsible option}} explains how to use the <code>state</code> parameter. It can be added to a {{tag|noinclude|p}} section after the template definition or to the instructions on the {{tl|documentation subpage}}. :; ''navbar''* :: If set to <code>plain</code>, the <span style="font-size: 88%;">V&nbsp;• T&nbsp;• E</span> links on the left side of the titlebar will not be displayed, and padding will be automatically used to keep the title centered. Use <code>off</code> to remove the <span style="font-size: 88%;">V&nbsp;• T&nbsp;• E</span> links, but not apply padding (this is for advanced use only; the "plain" option should suffice for most applications where a navbar is not desired). It is highly recommended that one not hide the navbar, in order to make it easier for users to edit the template, and to keep a standard style across pages. :; ''border''* :: ''See later section on [[#Child navboxes|using navboxes within one another]] for examples and a more complete description.'' If set to <code>child</code> or <code>subgroup</code>, then the navbox can be used as a borderless child that fits snugly in another navbox. The border is hidden and there is no padding on the sides of the table, so it fits into the ''list'' area of its parent navbox. If set to <code>none</code>, then the border is hidden and padding is removed, and the navbox may be used as a child of another container (do not use the <code>none</code> option inside of another navbox; similarly, only use the <code>child</code>/<code>subgroup</code> option inside of another navbox). If set to anything else (default), then a regular navbox is displayed with a 1px border. An alternate way to specify the border to be a subgroup style is like this (i.e. use the first unnamed parameter instead of the named ''border'' parameter): ::: <code><nowiki>{{Navbox|child</nowiki></code> :::: <code>...</code> ::: <code><nowiki>}}</nowiki></code> === Cells === :; ''title''* :: Text that appears centered in the top row of the table. It is usually the template's topic, i.e. a succinct description of the body contents. This should be a single line, but if a second line is needed, use <code><nowiki>{{-}}</nowiki></code> to ensure proper centering. This parameter is technically not mandatory, but using {{tl|Navbox}} is rather pointless without a title. :; ''above''* :: A full-width cell displayed between the titlebar and first group/list, i.e. ''above'' the template's body (groups, lists and image). In a template without an image, ''above'' behaves in the same way as the ''list1'' parameter without the ''group1'' parameter. :; ''group<sub>n</sub>''* :: (i.e. ''group1'', ''group2'', etc.) If specified, text appears in a header cell displayed to the left of ''list<sub>n</sub>''. If omitted, ''list<sub>n</sub>'' uses the full width of the table. :; ''list<sub>n</sub>''* :: (i.e. ''list1'', ''list2'', etc.) The body of the template, usually a list of links. Format is inline, although the text can be entered on separate lines if the entire list is enclosed within <code><nowiki><div> </div></nowiki></code>. At least one ''list'' parameter is required; each additional ''list'' is displayed in a separate row of the table. Each ''list<sub>n</sub>'' may be preceded by a corresponding ''group<sub>n</sub>'' parameter, if provided (see below). ::Entries should be separated using a [[newline]] and an [[asterisk]] (*). If instead two asterisks are used, it provides [[Nesting (computing)|nesting]] within the previous entry by enclosing the entry with brackets. Increasing the number of asterisks used increases the number of brackets around entries. :; ''image''* :: An image to be displayed in a cell below the title and to the right of the body (the groups/lists). For the image to display properly, the ''list1'' parameter must be specified. The ''image'' parameter accepts standard wikicode for displaying an image, ''e.g.'': ::: <code><nowiki>[[File:</nowiki><var>XX</var><nowiki>.jpg|80px|link=|alt=]]</nowiki></code> ::: nb: including "|right" will produce the usual left margin to provide separation from the list items and [[Zebra striping (computer graphics)|zebra striping]]. :; ''imageleft''* :: An image to be displayed in a cell below the title and to the left of the body (lists). For the image to display properly, the ''list1'' parameter must be specified and no groups can be specified. It accepts the same sort of parameter that ''image'' accepts. :; ''below''* :: A full-width cell displayed ''below'' the template's body (groups, lists and image). In a template without an image, ''below'' behaves in the same way as the template's final ''list<sub>n</sub>'' parameter without a ''group<sub>n</sub>'' parameter. For an example of the ''below'' parameter in use, see {{oldid|Main Page|352612160|this}} version of {{tl|Lists of the provinces and territories of Canada}}. === Style parameters === Styles are generally advised against, to maintain consistency among templates and pages in Wikipedia; but the option to modify styles is given. :; ''bodystyle''* :: Specifies [[Cascading Style Sheets|CSS]] styles to apply to the template body. This option should be used sparingly as it can lead to visual inconsistencies. Examples: ::: <code>bodystyle = background: #''nnnnnn'';</code> ::: <code>bodystyle = width: ''N''&nbsp;[em/%/px or width: auto];</code> ::: <code>bodystyle = float: [''left/right/none''];</code> ::: <code>bodystyle = clear: [''right/left/both/none''];</code> :; ''basestyle''* :: CSS styles to apply to the ''title'', ''above'', ''below'', and ''group'' cells all at once. The styles are not applied to ''list'' cells. This is convenient for easily changing the basic color of the navbox without having to repeat the style specifications for the different parts of the navbox. Examples: ::: <code>basestyle = background: lightskyblue;</code> :; ''titlestyle''* :: [[Cascading Style Sheets|CSS]] styles to apply to ''title'', most often the titlebar's background color: ::: <code>titlestyle = background: ''#nnnnnn'';</code> ::: <code>titlestyle = background: ''name'';</code> ::: <code>titlestyle = background: none;</code> — for no background color :; ''groupstyle''* :: CSS styles to apply to the ''groupN'' cells. This option overrides any styles that are applied to the entire table. Examples: ::: <code>groupstyle = background: #''nnnnnn'';</code> ::: <code>groupstyle = text-align: [''left/center/right''];</code> ::: <code>groupstyle = vertical-align: [''top/middle/bottom''];</code> :; ''group<sub>n</sub>style''* :: CSS styles to apply to a specific group, in addition to any styles specified by the ''groupstyle'' parameter. This parameter should only be used when absolutely necessary in order to maintain standardization and simplicity. Examples: ::: <code>group3style = background: red; color: white;</code> :; ''groupwidth'' :: A number and unit specifying a uniform width for the group cells, in cases where little content in the list cells may cause group cells to be too wide. No default. However, may be overridden by the ''group(n)style'' parameter. Examples: ::: <code>groupwidth = 9em</code> :; ''liststyle''* :: CSS styles to apply to all lists. Overruled by the ''oddstyle'' and ''evenstyle'' parameters (if specified) hereafter. When using backgound colors in the navbox, see the [[#Intricacies|note hereafter]]. :; ''list<sub>n</sub>style''* :: CSS styles to apply to a specific list, in addition to any styles specified by the ''liststyle'' parameter. This parameter should only be used when absolutely necessary in order to maintain standardization and simplicity. Examples: ::: <code>list5style = background: #ddddff;</code> :; ''listpadding''* :: A number and unit specifying the padding in each ''list'' cell. The ''list'' cells come equipped with a default padding of 0.25em on the left and right, and 0 on the top and bottom. Due to complex technical reasons, simply setting "liststyle = padding: 0.5em;" (or any other padding setting) will not work. Examples: ::: <code>listpadding = 0.5em 0;</code> (sets 0.5em padding for the top/bottom, and 0 padding for the left/right.) ::: <code>listpadding = 0;</code> (removes all list padding.) :; ''oddstyle'' :; ''evenstyle'' :: Applies to odd/even list numbers. Overrules styles defined by ''liststyle''. The default behavior is to add striped colors (white and gray) to odd/even rows, respectively, in order to improve readability. These should not be changed except in extraordinary circumstances. :; ''evenodd'' <span style="font-weight: normal;"><code>[swap, even, odd, off]</code></span> :: If set to <code>swap</code>, then the automatic striping of even and odd rows is reversed. Normally, even rows get a light gray background for striping; when this parameter is used, the odd rows receive the gray striping instead of the even rows. Setting to <code>even</code> or <code>odd</code> sets all rows to have that striping color. Setting to <code>off</code> disables automatic row striping. This advanced parameter should only be used to fix problems when the navbox is being used as a child of another navbox and the stripes do not match up. Examples and a further description can be found in the section on child navboxes below. :; ''abovestyle''* :; ''belowstyle''* :: CSS styles to apply to the top cell (specified via the ''above'' parameter) and bottom cell (specified via the ''below'' parameter). Typically used to set background color or text alignment: ::: <code>abovestyle = background: #''nnnnnn'';</code> ::: <code>abovestyle = text-align: [''left/center/right''];</code> ::: <code>belowstyle = background: #''nnnnnn'';</code> ::: <code>belowstyle = text-align: [''left/center/right''];</code> :; ''imagestyle''* :; ''imageleftstyle''* :: CSS styles to apply to the cells where the image/imageleft sits. These styles should only be used in exceptional circumstances, usually to fix width problems if the width of groups is set and the width of the image cell grows too large. Examples: ::: <code>imagestyle = width:5em;</code> ===== Default styles ===== The style settings listed here are those that editors using the navbox change most often. The other more complex style settings were left out of this list to keep it simple. Most styles are set in [[MediaWiki:Common.css]]. : <code>bodystyle = background: #fdfdfd; width: 100%; vertical-align: middle;</code> : <code>titlestyle = background: #ccccff; padding-left: 1em; padding-right: 1em; text-align: center;</code> : <code>abovestyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: center;</code> : <code>belowstyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: center;</code> : <code>groupstyle = background: #ddddff; padding-left: 1em; padding-right: 1em; text-align: right;</code> : <code>liststyle = background: transparent; text-align: left/center;</code> : <code>oddstyle = background: transparent;</code> : <code>evenstyle = background: #f7f7f7;</code> Since ''liststyle'' and ''oddstyle'' are transparent, odd lists have the color of the ''bodystyle'', which defaults to #fdfdfd (white with a hint of gray). A list defaults to <code>text-align: left;</code> if it has a group, if not it defaults to <code>text-align: center;</code>. Since only ''bodystyle'' has a vertical-align all the others inherit its <code>vertical-align: middle;</code>. === Advanced parameters === :; ''bodyclass'' :; ''aboveclass'' :; ''groupclass'' :; ''listclass'' :; ''belowclass'' :: This enables attaching a CSS class to group or list cells. The most common use for ''listclass'' is to give it the <code>hlist</code> class that will cause lists to render horizontally. All these parameters accept the <code>hlist</code> class, but if more than one parameter is used for <code>hlist</code>, use {{para|bodyclass|hlist}} instead. :; ''titlegroup'' :: This puts a group in the title area, with the same default styles as ''group<sub>n</sub>''. It should be used only in exceptional circumstances (usually advanced meta-templates) and its use requires some knowledge of the internal code of {{tl|Navbox}}; you should be ready to manually set up CSS styles to get everything to work properly if you wish to use it. If you think you have an application for this parameter, it might be best to change your mind, or consult the talk page first. :; ''titlegroupstyle'' :: The styles for the titlegroup cell. :; ''innerstyle'' :: A very advanced parameter to be used ''only'' for advanced meta-templates employing the navbox. Internally, the navbox uses an outer table to draw the border, and then an inner table for everything else (title/above/groups/lists/below/images, etc.). The ''style''/''bodystyle'' parameter sets the style for the outer table, which the inner table inherits, but in advanced cases (meta-templates) it may be necessary to directly set the style for the inner table. This parameter provides access to that inner table so styles can be applied. Use at your own risk. ==== Microformats ==== :; ''bodyclass'' :: This parameter is inserted into the "class" attribute for the navbox as a whole. :; ''titleclass'' :: This parameter is inserted into the "class" attribute for the navbox's title caption. This template supports the addition of microformat information. This is done by adding "class" attributes to various data cells, indicating what kind of information is contained within. To flag a navbox as containing [[hCard]] information about a person, for example, add the following parameter: <pre> | bodyclass = vcard </pre> ''and'' <pre> | titleclass = fn </pre> ''or'' (for example): <pre><nowiki> | title = The books of <span class="fn">[[Iain Banks]]</span> </nowiki></pre> ...and so forth. See [[Wikipedia:WikiProject Microformats]] for more information on adding microformat information to Wikipedia, and [[microformat]] for more information on microformats in general. == Layout of table == ===Without image, above and below=== Table generated by {{tl|Navbox}} '''without''' ''image'', ''above'' and ''below'' parameters (gray list background color added for illustration only): {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | liststyle = background: silver; | title = {{{title}}} | group1 = {{{group1}}} | list1 = {{{list1}}} | group2 = {{{group2}}} | list2 = {{{list2}}} | list3 = {{{list3}}} ''without {{{group3}}}'' | group4 = {{{group4}}} | list4 = {{{list4}}} }} ===With image, above and below=== Table generated by {{tl|Navbox}} '''with''' ''image'', ''above'' and ''below'' parameters (gray list background color added for illustration only): {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | liststyle = background: silver; | image = {{{image}}} | title = {{{title}}} | above = {{{above}}} | group1 = {{{group1}}} | list1 = {{{list1}}} | group2 = {{{group2}}} | list2 = {{{list2}}} | list3 = {{{list3}}} ''without {{{group3}}}'' | group4 = {{{group4}}} | list4 = {{{list4}}} | below = {{{below}}} }} ===With image and without groups=== Table generated by {{tl|Navbox}} '''with''' ''image'', ''imageleft'', ''lists'', and '''without''' ''groups'', ''above'', ''below'' (gray list background color added for illustration only): {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | liststyle = background: silver; | image = {{{image}}} | imageleft = {{{imageleft}}} | title = {{{title}}} | list1 = {{{list1}}} | list2 = {{{list2}}} | list3 = {{{list3}}} | list4 = {{{list4}}} }} == Examples == <!-- Please do not encourage folks to use <div> within Navboxes as (unless handled carefully) they can negate liststyles/groupstyles/etc. settings. --> === No image === <pre style="overflow: auto;"> {{Navbox | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | group1 = Centre | list1 = * [[Cyberjaya]] | group2 = Area | list2 = * [[Klang Valley]] | group3 = Major landmarks | list3 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] * [[Kuala Lumpur International Airport]] | group4 = Infrastructure | list4 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | group5 = Prime applications | list5 = * [[E-Government]] * [[MyKad]] }} </pre> {{{{PAGENAMETDOC}} | name = Navbox/doc | state = uncollapsed | title = [[MSC Malaysia]] | listclass = hlist | group1 = Centre | list1 = * [[Cyberjaya]] | group2 = Area | list2 = * [[Klang Valley]] | group3 = Major landmarks | list3 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] * [[Kuala Lumpur International Airport]] | group4 = Infrastructure | list4 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | group5 = Prime applications | list5 = * [[E-Government]] * [[MyKad]] }} === With image, without groups === <pre style="overflow: auto;"> {{Navbox | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | image = [[File:Flag of Malaysia.svg|80px|link=|alt=]] | list1 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] * [[Kuala Lumpur International Airport]] }} </pre> {{{{PAGENAMETDOC}} | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | image = [[File:Flag of Malaysia.svg|80px|link=|alt=]] | list1 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] * [[Kuala Lumpur International Airport]] }} === With two images, without groups, multiple lists === <pre style="overflow: auto;"> {{Navbox | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | image = [[File:Flag of Malaysia.svg|80px|link=|alt=]] | imageleft = [[File:Flag of Malaysia.svg|80px]] | list1 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] | list2 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | list3 = * [[E-Government]] * [[MyKad]] | list4 = * [[Klang Valley]] }} </pre> {{{{PAGENAMETDOC}} | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | image = [[File:Flag of Malaysia.svg|80px|link=|alt=]] | imageleft = [[File:Flag of Malaysia.svg|80px]] | list1 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] | list2 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | list3 = * [[E-Government]] * [[MyKad]] | list4 = * [[Klang Valley]] }} === With image, groups, above, below === <pre style="overflow: auto;"> {{Navbox | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | above = Above text goes here | image = [[File:Flag of Malaysia.svg|80px|link=|alt=]] | group1 = Centre | list1 = * [[Cyberjaya]] | group2 = Area | list2 = * [[Klang Valley]] | group3 = Major landmarks | list3 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] | group4 = Infrastructure | list4 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | group5 = Prime applications | list5 = * [[E-Government]] * [[MyKad]] | below = Below text goes here }} </pre> {{{{PAGENAMETDOC}} | name = Navbox/doc | title = [[MSC Malaysia]] | listclass = hlist | above = Above text goes here | image = [[File:Flag of Malaysia.svg|80px|link=|alt=]] | group1 = Centre | list1 = * [[Cyberjaya]] | group2 = Area | list2 = * [[Klang Valley]] | group3 = Major landmarks | list3 = * [[Petronas Twin Towers]] * [[Kuala Lumpur Tower]] * [[Kuala Lumpur Sentral]] * [[Technology Park Malaysia]] * [[Putrajaya]] * [[Cyberjaya]] | group4 = Infrastructure | list4 = * [[Express Rail Link]] * [[KL-KLIA Dedicated Expressway]] | group5 = Prime applications | list5 = * [[E-Government]] * [[MyKad]] | below = Below text goes here }} == Child navboxes == {{Selfref|For additional examples, see the [[Template:Navbox/testcases|Navbox testcases page]].}} It is possible to place multiple navboxes within a single border with the use of the ''border'' parameter, or by specifying the first parameter to be "child". The basic code for doing this is as follows (which adds a subgroup for the first group/list area): <pre style="overflow: auto;"> {{Navbox | name = {{subst:PAGENAME}} | title = Title | group1 = [optional] | list1 = {{Navbox|child ...child navbox parameters... }} ... }} </pre> === Subgroups example === {{main|Template:Navbox subgroup}} This example shows how subgroups can be used. It is recommended that one use {{tl|Navbox subgroup}}, but the same result can be reached by using {{tl|Navbox}} with <code>border = child</code> or the first unnamed parameter set to <code>child</code>. The striping is alternated automatically. To remove the striping altogether, you can set <code>liststyle = background:transparent;</code> in each of the navboxes. {{{{PAGENAMETDOC}} | name = Navbox/doc | image = [[File:Flag of the United States.svg|100px|link=|alt=]] | state = uncollapsed | title = Multiple subgroup example | above = Above | below = Below | group1 = Group1 | list1 = List1 | group2 = Group2 | list2 = {{{{PAGENAMETDOC}}|child | evenodd = swap | group1 = Group2.1 | list1 = List1 | group2 = Group2.2 | list2 = List2 | group3 = Group2.3 | list3 = List3 }} | group3 = Group3 | list3 = List3 | group4 = Group4 | list4 = {{{{PAGENAMETDOC}}|child | evenodd = swap | group1 = Group4.1 | list1 = List1 | group2 = Group4.2 | list2 = List2 | group3 = Group4.3 | list3 = List3 }} }} === Multiple show/hides in a single container === {{main|Template:Navbox with collapsible groups}} The example below is generated using a regular navbox for the main container, then its list1, list2, and list3 parameters each contain another navbox, with <code>1 = child</code> set. The view (v), discuss (d), edit (e) navbar links are hidden using <code>navbar = plain</code> for each of them, or could be suppressed by just leaving out the ''name'' parameter (child navboxes do not require the name parameter to be set, unlike regular navboxes). {{{{PAGENAMETDOC}} | name = Navbox/doc | title = [[File:Blason France moderne.svg|x17px|link=|alt=]] [[File:Flag of France.svg|x17px|link=|alt=]] [[French colonial empire|Former French overseas empire]] | state = uncollapsed | list1 = {{{{PAGENAMETDOC}}|child | navbar = plain | title = [[French colonial empire|Former French colonies]] in [[Africa]] and the [[Indian Ocean]] | listclass = hlist | group1 = [[Mahgreb]] | list1 = * [[French rule in Algeria|Algeria]] * [[French Morocco|Morocco]] <small>([[Arguin|Arguin Island]])</small> * [[History of Tunisia|Tunisia]] | group2 = [[French West Africa]] | list2 = * [[History of Côte d'Ivoire#French Period|Côte d'Ivoire]] * [[French Dahomey|Dahomey]] * [[French Sudan]] * [[French Guinea|Guinea]] * [[History of Mauritania#French colonization and post-colonial history|Mauritania]] * [[History of Niger#Colonization|Niger]] * [[History of Senegal|Senegal]] * [[French Upper Volta|Upper Volta]] * [[French Togoland]] * [[James Island (The Gambia)|James Island]] | group3 = [[French Equatorial Africa]] | list3 = * [[Colonial Chad|Chad]] * [[History of Gabon|Gabon]] * [[History of the Republic of the Congo|Middle Congo]] * [[Oubangui-Chari]] | group4 = [[Comoros]] | list4 = * [[Anjouan]] * [[Grande Comore]] * [[Mohéli]] * [[History of Djibouti#French Interest|French Somaliland (Djibouti)]] * [[History of Madagascar#French control|Madagascar]] * [[Mauritius|Ile de France]] * [[Seychelles]] }} | list2 = {{{{PAGENAMETDOC}}|child | navbar = plain | title = [[French colonial empire|Former French colonies]] in the [[Americas]] | listclass = hlist | list1 = * [[New France]]{{spaces|2}}<small>([[Acadia]], [[Louisiana (New France)|Louisiana]], [[Canada, New France|Canada]], [[Newfoundland (island)|Terre Neuve]]) 1655–1763 </small> | list2 = * [[Inini]] * [[Berbice]] * [[Saint-Domingue]] * <small>[[Haiti]]</small> * [[Tobago]] * [[History of the British Virgin Islands|Virgin Islands]] * [[France Antarctique]] * [[France Équinoxiale]] | below = [[French West India Company]] }} | list3 = {{{{PAGENAMETDOC}}|child | navbar = plain | title = [[French colonial empire|Former French colonies]] in [[Asia]] and [[Oceania]] | listclass = hlist | group1 = [[French India]] | list1 = * [[Chandernagor]] * [[Coromandel Coast]] * [[History of Chennai|Madras]] * [[Mahé, India|Mahé]] * [[History of Pondicherry|Pondichéry]] * [[Karaikal]] * [[Yanam (India)|Yanaon]] | group2 = [[French Indochina]] | list2 = * [[Colonial Cambodia|Cambodia]] * [[History of Laos to 1945#French Laos|Laos]] * [[French Indochina|Vietnam]] <small>([[Annam (French colony)|Annam]], [[Cochinchina]], [[Tonkin]])</small> | group3 = Other Asian | list3 = * [[Alawite State|Alaouites]] * [[Republic of Hatay|Alexandretta-Hatay]] * [[Sri Lanka|Ceylon]] * [[Kwangchowan]] | group4 = [[Oceania]] | list4 = * [[New Hebrides]] ** [[History of Vanuatu|Vanuatu]] | below = [[French East India Company]] }} }} == Relationship with other Navbox templates == This navbox template is specifically designed to work in conjunction with two other sister templates: {{tl|Navbox with columns}} and {{tl|Navbox with collapsible groups}}. All three of these templates share common parameters for consistency and ease of use (such parameters are marked with an asterisk (*) in the [[#Parameter descriptions|parameter descriptions]] list hereinbefore). Most importantly, each template can be used as a child of one another (by using the {{para|border|child}} parameter, or by specifying the first unnamed parameter to be <code>child</code>. For example: <code><nowiki>{{Navbox|child ...}}</nowiki></code>, <code><nowiki>{{Navbox with columns|child ...}}</nowiki></code> or <code><nowiki>{{Navbox with collapsible groups|child ...}}</nowiki></code>.) == Technical details == * This template uses CSS classes for most of its looks, thus it is fully skinnable. * Internally this meta template uses HTML markup instead of wiki markup for the table code. That is the usual way we make meta templates since wiki markup has several drawbacks. For instance it makes it harder to use [[m:Help:ParserFunctions|parser functions]] and special characters in parameters. * For more technical details see the [[{{TALKPAGENAME}}|talk page]], the CSS classes in [[MediaWiki:Common.css]] and the collapsible table used to hide the box in [[MediaWiki:Common.js]]. === Intricacies === * The 2px wide border between groups and lists is drawn using the border-left property of the list cell. Thus, if you wish to change the background color of the template (for example <code>bodystyle = background:purple;</code>), then you'll need to make the border-left-color match the background color (i.e. <code>liststyle = border-left-color: purple;</code>). If you wish to have a border around each list cell, then the 2px border between the list cells and group cells will disappear; you'll have to come up with your own solution. * The list cell width is initially set to 100%. Thus, if you wish to manually set the width of group cells, you'll need to also specify the liststyle to have width: auto. If you wish to set the group width and use images, it's up to you to figure out the CSS in the groupstyle, liststyle, imagestyle, and imageleftstyle parameters to get everything to work correctly. Example of setting group width: :: <code>groupstyle = width: 10em;</code> :: <code>liststyle = width: auto;</code> * Adjacent navboxes have only a 1 pixel border between them (except in IE 6, which doesn't support the necessary CSS). If you set the top or bottom margin of <code>style/bodystyle</code>, then this will not work. * The default margin-left and margin-right of the outer navbox table are set to "auto;". If you wish to use navbox as a float, you need to manually set the margin-left and margin-right values, because the auto margins interfere with the float option. For example, add the following code to use the navbox as a float: ::<code>bodystyle = width: 22em; float: right; margin-left: 1em; margin-right: 0;</code> === Copying to other projects or wikis? === Using this template on other wikis requires [[HTML Tidy]] to be turned on. A version that does not require Tidy can be found at [[Wikipedia:WikiProject Transwiki/Template:Navbox]]. (That version generally shouldn't be used here on the English Wikipedia.) More detailed information on copying {{tlf|Navbox}} to other wikis can be found on the [[Template talk:Navbox|talk page]]. === Known issues === # If the heading of the navbox spans more than one line, the second line will be displayed to the right of center. This can be avoided by hard-coding linebreaks with {{tag|br|single|params=clear="all"}}. # In Internet Explorer 8 and 9, there is a bug when using <code>hlist</code>; navbox will fail to wrap the list to the next line if the list items start with an image, causing navbox to extend its width outside the screen. This can be fixed by adding <code>&amp;nbsp;</code> in front of the images. # Excessive use of the '''unsubstituted''' {{tlx|•}} template as a delimiter, can in extreme cases cause the wiki page rendering to fail&nbsp;— there is a limit to the number of templates that can be used on a page (example [[Ketamine]] where the inclusion of eleven Navboxes with hundreds of bullets caused the page load not to complete, only the substitution of the bullets in those navboxes cured the problem). Use of the <code>hlist</code> class avoids the delimiter transclusion issue altogether, as the delimiters are rendered via CSS. == See also == * {{tl|Otherarticles}} – a small navbox based on an existing category * {{tl|Navbar}} – Used for the navigation links in navbox. * {{tl|Nobold}} – To display text at normal font-weight within a context where the default font-weight is bold, e.g. header cells in tables. * {{tl|Sidebar}} – Vertically-aligned navigation templates. * [[Template:Navbox/testcases]] – For additional examples of template code. * [[Wikipedia:Line-break handling]] – The how-to guide about how to handle word wraps (line breaks) on Wikipedia, such as the wrapping of the link lists used in navboxes. * {{tl|Nowrap begin}}, {{tl|·}} and {{tl|•}} are '''deprecated''' in favor of the <code>hlist</code> class for formatting lists. See [[Template:Flatlist#Technical details|Flatlist]] for a technical explanation of how <code>hlist</code> works. {{Navigation templates}} <includeonly>{{#ifeq:{{SUBPAGENAME}}|sandbox|| <!-- Categories go below this line, please; interwikis go to Wikidata, thank you! --> [[Category:Navigational boxes| ]] [[Category:Templates generating microformats]] [[Category:Wikipedia metatemplates]] [[Category:Exclude in print]] }}</includeonly> 2445dfc383a8dec3f54eb1a579ed604ad24d0054 Template:Navbox suite 10 593 2471 2470 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <onlyinclude>{{#invoke:sidebar|sidebar | width = auto | bodystyle = border-spacing:0;background:#f7f7f7;padding:2px; | titleclass = navbox-title | title = Navbox suite | contentclass = plainlist | contentstyle = padding:0.25em;background:#fdfdfd; | content1 = *{{tl|Navbox}} *{{tl|Navbox subgroup}} *{{tl|Navbox with collapsible groups}} *{{tl|Navbox with columns}} *{{tl|Navboxes}} | navbarstyle = background:#fdfdfd;padding:0 5px }}</onlyinclude><!-- NOTE: A template MUST support all of the parameters marked with a cross in Template:Navbox/doc in order to be Navbox suite compliant. In particular, the name, state, border, and navbar parameters are especially important. --><noinclude> {{Documentation|content= [[Category:Navigational boxes| ]] [[Category:Documentation shared content templates]] [[Category:Wikipedia-internal navigational templates]] }}</noinclude> fd01b836fb9fc155d7963c59d432f242fa499552 Template:Navbox visibility 10 594 2473 2472 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki Navboxes and other templates using the <code>navbox</code> or <code>vertical-navbox</code> attributes are <mark>not displayed on the [https://en.m.wikipedia.org/ Mobile Web site for Wikipedia]</mark>, which accounts for approximately 45% of readers.<noinclude> {{documentation}} [[Category:Notice and warning templates]] [[Category:Navigational meta-templates]] </noinclude> 7db55ab7c3ab670b306bcbaadb7cecf5f2ed7535 Template:Navigation templates 10 595 2475 2474 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {| class="wikitable hlist" style="margin-left: auto; margin-right: auto; width: auto; text-align: center; font-size: 90%;" |+ <span style="font-size: 130%;">Navigation templates comparison</span> |- style="line-height: 10pt;" ! style="text-align: left; padding-left: 4px; font-size: 111%;" | {{Navbar|Navigation templates|plain=1}} ! Collapsible !! Header color ! Image !! Groups !! Style (body) <br /> parameter/s !! Examples |- | style="text-align: left;" | {{tl|Navbox}} | collapsible || style="background: #ccf;" | navbox | Left/right of body || Yes || Yes || * {{tl|Solar System}} * {{tl|Governance of Greater London}} |- | style="text-align: left;" | {{tl|Navbox with collapsible groups}} | collapsible || style="background: #ccf;" | navbox | Left/right of body and/or in each list || Yes || Yes || * {{tl|Scouting}} * {{tl|University of Michigan}} |- | style="text-align: left;" | {{tl|Navbox with columns}} | collapsible || style="background: #ccf;" | navbox | Left/right of columns || No || Yes || * {{tl|Current U.S. Senators}} * {{tl|Historical regions of the Czech Republic}} |} {| class="wikitable" style="margin-left: auto; margin-right: auto; width: auto; text-align: center; font-size: 90%;" |+ <span style="font-size: 130%;">Collapsible attributes</span> |- style="line-height: 10pt;" ! Type !! CSS classes !! JavaScript !! Collapses when !! Custom <br /> initial&nbsp;state !! Nesting |- | style="text-align:left;" | [[Help:Collapsing|Collapsible tables]] | collapsible | Defined in [[MediaWiki:Common.js|Common.js]] | 2 or more autocollapse on page || Yes || Yes |}<noinclude> {{documentation}} [[Category:Navigational boxes| ]] [[Category:Documentation shared content templates]] </noinclude> <noinclude>{{convert to use Navbox}}</noinclude> 238343329afde083fd17089a3d8f5dbfda06e8b9 Template:Ns has subpages 10 596 2477 2476 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{<includeonly>safesubst:</includeonly>#invoke:Ns has subpages|main}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 060d2d01af26cb67fd90a7c346a0d2d5e450a040 Template:Oldid 10 597 2479 2478 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <span class="plainlinks">[{{fullurl:{{{page|{{{1|Main Page}}}}}}|oldid={{{oldid|{{{2|}}}}}}}} {{{label|{{{title|{{{3|{{#if:{{{oldid|{{{2|}}}}}}|Old revision|Current version}} of''' {{{page|{{{1|'''a page'''}}}}}} '''}}}}}}}}}]</span><noinclude> {{documentation}} </noinclude> 5131b84bc0383b4e490d135545c19b235f16de56 Template:Ombox 10 598 2481 2480 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{#invoke:Message box|ombox}}<noinclude> {{documentation}} <!-- Categories go on the /doc subpage, and interwikis go on Wikidata. --> </noinclude> 0e54065432d540737b9e56c4e3a8e7f74d4534ea Template:PAGENAMETDOC 10 599 2483 2482 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{#ifeq:{{#invoke:String|find|{{FULLPAGENAME}}|/sandbox%d*$|plain=false}}|0|{{{{#if:{{{1|}}}||FULL}}BASEPAGENAME}}|{{{{#if:{{{1|}}}||FULL}}PAGENAME}}}}<noinclude> {{Documentation|content= This template returns the current {{Tlx|FULLBASEPAGENAME}}, unless the title ends in <code>/sandbox</code> plus any number of digits, in which case it returns the {{tlx|FULLPAGENAME}}. It is primarily meant for demonstrating the sandbox version of templates in their documentation. This template takes one numbered parameter (<code>1</code>); if anything is in this parameter then it will return <code>&#123;&#123;BASEPAGENAME&#125;&#125;</code> and <code>&#123;&#123;PAGENAME&#125;&#125;</code>, which have no namespace prefix. }} [[Category:Wikipedia variable-like templates]] </noinclude> 60d0ba16d0cb174077780998dd2d8ce252515d99 Template:Para 10 600 2485 2484 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <code class="nowrap" {{#if:{{{plain|}}}|style="border:none;background-color:inherit;color:inherit;"}}>&#124;{{#if:{{{1|}}}|{{{1}}}&#61;}}{{{2|}}}</code><noinclude> {{Documentation}} <!--Categories and interwikis go near the bottom of the /doc subpage.--> </noinclude> 66770157bb51b0aabb5b874e4f1bb8f04c80915c Template:Selfref 10 601 2487 2486 2017-09-15T13:04:11Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{#switch:{{{2|NONE}}} |NONE|hatnote|hat={{Hatnote|1=<span class="plainlinks selfreference noprint">{{{1}}}</span>}} |inline=<span class="plainlinks selfreference" style="font-style: italic;"><!--Same style as class hatnote.-->{{{1}}}</span> |<!--Matching the empty string here for unprintworthy content is for backwards compatibility with the 2006-2008 version. Do not depend on it!-->=<span class="plainlinks selfreference noprint">{{{1}}}</span> |#default={{error|Second parameter must be <code>hatnote</code>, <code>hat</code>, or <code>inline</code>}} }}<noinclude> {{Documentation}} <!-- PLEASE ADD THIS TEMPLATE'S CATEGORIES THE /doc SUBPAGE, AND INTERWIKIS TO WIKIDATA, THANKS --> </noinclude> a1de324335111c757641de6fd35b8d280363a6dd Template:Spaces 10 602 2489 2488 2017-09-15T13:04:12Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <span class="nowrap">{{#iferror:{{#expr:{{{1|1}}}}} |{{#switch:{{{1}}} |fig=&#8199; |en=&ensp; |em=&emsp; |thin=&thinsp; |hair=&#8202; |&nbsp; }} |{{#invoke:String|rep|{{#switch:{{{2}}} |fig=&#8199; |en=&ensp; |em=&emsp; |thin=&thinsp; |hair=&#8202; |&nbsp; }}|{{{1|1}}}}} }}</span><noinclude> {{documentation}} </noinclude> a9ed762825e7579f15dcb9b171b0c1c3bf524b3f Template:Tag 10 603 2491 2490 2017-09-15T13:04:12Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <code class="{{#ifeq:{{{wrap|}}}|yes|wrap|nowrap}}" style="{{#ifeq:{{{style|}}}|plain|border:none;background:transparent;|{{{style|}}}}}"><!-- Opening tag -->{{#switch:{{{2|pair}}} |c|close = |e|empty|s|single|v|void |o|open |p|pair = &lt;{{{1|tag}}}{{#if:{{{params|}}}|&#32;{{{params}}}}} }}<!-- Content between tags -->{{#switch:{{{2|pair}}} |c|close = {{{content|}}} |e|empty|s|single|v|void = &#32;&#47;&gt; |o|open = &gt;{{{content|}}} |p|pair = {{#ifeq:{{{1|tag}}}|!--||&gt;}}{{{content|...}}} }}<!-- Closing tag -->{{#switch:{{{2|pair}}} |e|empty|s|single|v|void |o|open = |c|close |p|pair = {{#ifeq:{{{1|tag}}}|!--|--&gt;|&lt;&#47;{{{1|tag}}}&gt;}} }}<!-- --></code><noinclude> {{Documentation}} </noinclude> 9a9d57bd22b1e66278e044e69acf71bb7e266d37 Template:Template display 10 604 2493 2492 2017-09-15T13:04:12Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki {{#ifeq: {{{1}}}| adaptive |<table class="plainlinks advert" role="presentation" style="margin: 0 10%; border: 1px solid #aaa; border-left: 10px solid #1e90ff; background: #fbfbfb;"><tr><td class="mbox-image" style="width:71px;padding:3px;">[[File:Different devices simple.svg|65x65px|link=|alt=]]</td><td class="mbox-text"><span class="mbox-text-span">This template is [[Adaptive web design|adaptive]] and <strong>displays differently in mobile and desktop view</strong>. Read the documentation for an explanation of the differences and why they exist.</span></td></tr></table> | {{#ifeq: {{{1}}} | nomobile|<table class="plainlinks advert" role="presentation" style="margin: 0 10%; border: 1px solid #aaa; border-left: 10px solid #1e90ff; background: #fbfbfb;"><tr><td class="mbox-image" style="width:55px">[[File:Handheld devices no.svg|55px|link=|alt=]]</td><td class="mbox-text"><span class="mbox-text-span">This template does not display in the mobile view of Wikipedia; it is <strong>desktop only</strong>. Read the documentation for an explanation.</span></td></tr></table>|{{#ifeq: {{{1}}} | nodesktop |<table class="plainlinks advert" role="presentation" style="margin: 0 10%; border: 1px solid #aaa; border-left: 10px solid #1e90ff; background: #fbfbfb;"><tr><td class="mbox-image" style="width:55px">[[File:Desktop devices no.svg|55px|link=|alt=]]</td><td class="mbox-text"><span class="mbox-text-span">This template does not display in the desktop view of Wikipedia; it is <strong>mobile only</strong>. Read the documentation for an explanation.</span></td></tr></table>| }}| }}| }}<noinclude>{{Documentation}}</noinclude> 97a1cb4724de8d1e5c42332f8b9fbcfaa43093eb Template:Tl 10 605 2495 2494 2017-09-15T13:04:12Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki &#123;&#123;[[Template:{{{1}}}|{{{1}}}]]&#125;&#125;<noinclude> {{documentation}} <!-- Categories go on the /doc subpage and interwikis go on Wikidata. --> </noinclude> 91be693cd63410db06fc933eddb412ba433564dc Template:Tlf 10 606 2497 2496 2017-09-15T13:04:12Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <span class="nowrap">&#123;&#123;{{#if:{{{1|}}}|{{{1}}}| tlf&#124;...}}<!-- -->{{#ifeq:{{{2|x}}}|{{{2|}}}| &#124;{{{2}}} | }}<!-- -->{{#ifeq:{{{3|x}}}|{{{3|}}}| &#124;{{{3}}} | }}<!-- -->{{#ifeq:{{{4|x}}}|{{{4|}}}| &#124;{{{4}}} | }}<!-- -->{{#ifeq:{{{5|x}}}|{{{5|}}}| &#124;{{{5}}} | }}<!-- -->{{#ifeq:{{{6|x}}}|{{{6|}}}| &#124;{{{6}}} | }}<!-- -->{{#ifeq:{{{7|x}}}|{{{7|}}}| &#124;{{{7}}} | }}<!-- -->{{#ifeq:{{{8|x}}}|{{{8|}}}| &#124;{{{8}}} | }}<!-- -->{{#ifeq:{{{9|x}}}|{{{9|}}}| &#124;{{{9}}} | }}<!-- -->&#125;&#125;</span><noinclude> {{documentation}} <!-- Add categories and interwikis to the /doc sub-page, not here! --> </noinclude> c4b4c9f5569053b1a7176f4ef16ee85e80f1350f Template:Tlx 10 607 2499 2498 2017-09-15T13:04:12Z Fli091 93 1 revision imported: Import https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Transwiki/Template:Navbox wikitext text/x-wiki <includeonly><!-- --><code><!-- --><nowiki>{{</nowiki>{{#if:{{{subst|}}} |[[Help:Substitution|subst]]:}}<!-- -->[[{{{LANG|}}}{{{SISTER|}}}{{ns:Template}}:{{{1|}}}|{{{1|}}}]]<!-- -->{{#if:{{{2|}}} |&#124;{{{2}}}}}<!-- -->{{#if:{{{3|}}} |&#124;{{{3}}}}}<!-- -->{{#if:{{{4|}}} |&#124;{{{4}}}}}<!-- -->{{#if:{{{5|}}} |&#124;{{{5}}}}}<!-- -->{{#if:{{{6|}}} |&#124;{{{6}}}}}<!-- -->{{#if:{{{7|}}} |&#124;{{{7}}}}}<!-- -->{{#if:{{{8|}}} |&#124;{{{8}}}}}<!-- -->{{#if:{{{9|}}} |&#124;{{{9}}}}}<!-- -->{{#if:{{{10|}}} |&#124;{{{10}}}}}<!-- -->{{#if:{{{11|}}} |&#124;{{{11}}}}}<!-- -->{{#if:{{{12|}}} |&#124;''…''}}<!-- --><nowiki>}}</nowiki><!-- --></code><!-- --></includeonly><noinclude> {{Documentation}}</noinclude> 5633c008ca0a8c29aa9cea811c02e4cd5c61337b Layout XL and IHP SG13S 0 546 2501 2302 2017-09-15T13:14:29Z Fli091 93 Added [[Category:Mikroelektronikk]] wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = Run LVS by pressing Assura -> Run LVS. [[Category:Mikroelektronikk]] f154b64e56d03b0c92ffab9bb005c4b7f2123eeb SAMPA/SAMPA DAQ Registers 0 469 2502 2060 2017-09-15T13:14:48Z Fli091 93 Added [[Category:Mikroelektronikk]] wikitext text/x-wiki = SAMPA DAQ Registers = == Command and Control module registers == The registers for the command and control module, located at address 0x0000 from the UART or 0xFF200000 from the HPS, is listed in table 4.1 {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | SC_ADD | [15:0] | 0x00 | RW | 0x00 | [4:0] | Slow control: Register address |- | | | | RW | 0x00 | [9:5] | Slow control: Channel address |- | | | | RW | 0x00 | [13:10] | Slow control: Chip address |- | | | | RW | 0x00 | [14] | Slow control: Broadcast |- | | | | RW | 0x00 | [15] | Slow control: Write/ not read |- | SC_DAT | [19:0] | 0x01 | RW | 0x00 | [19:0] | Slow control: Data to write |- | SC_MASK | [19:0] | 0x02 | RW | 0x00 | [19:0] | Slow control: Mask for writing * |- | CMD | [31:0] | 0x03 | RW | 0x00 | [15:0] | Commands, see table 4.2 |- | | | | RW | 0x00 | [31:15] | Loop count for commands |- | SC_RLT | [19:0] | 0x04 | R | 0x00 | [12:0] | Slow control: Response from SAMPA |- | SC_ERR | [1:0] | 0x05 | R | 0x00 | [0] | Error: Timeout waiting for response from slow control |- | | | | R | 0x00 | [1] | Error: Response from SAMPA not as expected |- | LNK_STS | [31:0] | 0x06 | R | 0x00 | [31:0] | Ethernet link status * |- | EVT_CFG | [31:0] | 0x07 | RW | 0x01 | [1:0] | Test signal output, see table 4.3 |- | | | | RW | 0x00 | [2] | Enable SLVS testing |- | | | | RW | 0x00 | [3] | Enable continuous readout of shiftregister |- | | | | RW | 0x00 | [31:3] | Reserved * |- | EVT_CNT | [31:0] | 0x08 | R | 0x00 | [31:0] | Reserved * |- | EV_BL | [31:0] | 0x09 | R | 0x00 | [31:0] | Reserved * |- | SMP_STS1 | [30:0] | 0x0A | R | | | Status of signals to and from SAMPA (updated every clock cycle) |- | | | | R | | [12:0] | Test data output from SAMPA |- | | | | R | | [16:13] | Serial out [3:0] |- | | | | R | | [18:17] | Number of serial out |- | | | | R | | [19] | Enable ZSU |- | | | | R | | [20] | Enable BC2 |- | | | | R | | [21] | Enable TCFU |- | | | | R | | [22] | Enable BC1 |- | | | | R | | [25:23] | Select test output |- | | | | R | | [26] | Select ADC0 or test input |- | | | | R | | [30:27] | Chip address |- | SMP_STS2 | [5:0] | 0x0B | R | | | Status of signals to and from SAMPA cont. |- | | | | R | | [0] | Slow control to SAMPA |- | | | | R | | [1] | Slow control from SAMPA |- | | | | R | | [2] | Reset_n |- | | | | R | | [3] | Event trigger |- | | | | R | | [4] | Heartbeat trigger |- | | | | R | | [5] | Sync signal |- | SMP_CFG | [13:0] | 0x0C | RW | | | SAMPA static signals, see SAMPA spec document for further details |- | | | | RW | 0x02 | [1:0] | Number of serial out |- | | | | RW | 0x00 | [2] | Enable ZSU |- | | | | RW | 0x00 | [3] | Enable BC2 |- | | | | RW | 0x01 | [4] | Enable TCFU |- | | | | RW | 0x01 | [5] | Enable BC1 |- | | | | RW | 0x03 | [8:6] | Select test output |- | | | | RW | 0x01 | [9] | Select ADC0 or test input |- | | | | RW | 0x01 | [13:10] | Chip address |- | SLVS_ERR | [15:0] | 0x0D | R | 0x00 | | SLVS errors detected |- | RAD_ERR | [31:0] | 0x0E | R | | | Errors detected in shiftregister test |- | | | | R | 0x00 | [15:0] | Bit 0 errors |- | | | | R | 0x00 | [31:16] | Bit 1 errors |- | VER | [31:0] | 0x0F | R | | | SVN version build was based on in dec |} Commands for command and control unit. {| class="wikitable" ! Value ! Description |- | 0x1 | Reset FPGA and SAMPA |- | 0x2 | Reset SAMPA |- | 0x3 | Send event trigger |- | 0x4 | Send heartbeat trigger |- | 0x5 | Send sync signal |- | 0x6 | Run readout of shiftregister once (RAD) |- | 0x7 | Reset errors in shiftregister count (RAD_ERR) |- | 0x8 | Execute slow control command |- | 0x9 | Reset HPS |} Test signals available for generation. {| class="wikitable" ! Value ! Description |- | 0x0 | Constant zeros |- | 0x1 | Sine wave, full wave, 512 samples pulse width |- | 0x2 | Saw wave, full wave, 512 samples pulse width |- | 0x3 | Triangle wave, full wave, 1024 samples pulse width |} == Data manager registers == The registers for the data manager module, located at address 0x0040 from the UART or 0xFF201000 from the HPS, is listed in table 4.4. {| class="wikitable" ! Register name ! ! Address ! Type ! Default ! ! Description |- | CNTRL | [7:0] | 0x00 | RW | 0x00 | | Control register |- | | | | RW | 0x00 | [0] | Enable acquisition |- | | | | RW | 0x00 | [7:1] | Reserved |- | PKT0 | [31:0] | 0x01 | R | 0x00 | [31:0] | Packets written to memory from channel 0 |- | PKT1 | [31:0] | 0x02 | R | 0x00 | [31:0] | Packets written to memory from channel 1 |- | PKT2 | [31:0] | 0x03 | R | 0x00 | [31:0] | Packets written to memory from channel 2 |- | PKT3 | [31:0] | 0x04 | R | 0x00 | [31:0] | Packets written to memory from test-input/ADC |- | FIFO0 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 0 |- | FIFO1 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 1 |- | FIFO2 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 2 |- | FIFO3 | [8:0] | 0x05 | R | 0x00 | [8:0] | Number of 64 bit words in FIFO 3 |} [[Category:Mikroelektronikk]] 4dcf6de4a617c1549ae556a2f850434957985010 SAMPA/SAMPA Registers 0 468 2503 2055 2017-09-15T13:15:01Z Fli091 93 Added [[Category:Mikroelektronikk]] wikitext text/x-wiki = SAMPA MPW1 Registers = == Channel specific registers == These are registers specific to each channel. By using a broadcast command, all channels can be written at the same time.<br /> {| class="wikitable" ! Register name ! ! Address ! Type ! Default value ! ! Description |- | K1 | [12:0] | 0x00 | RW | 0x00 | [12:0] | First pole of the TCFU |- | K2 | [12:0] | 0x01 | RW | 0x00 | [12:0] | Second pole of the TCFU |- | K3 | [12:0] | 0x02 | RW | 0x00 | [12:0] | Third pole of the TCFU |- | K4 | [12:0] | 0x03 | RW | 0x00 | [12:0] | Fourth pole of the TCFU |- | L1 | [12:0] | 0x04 | RW | 0x00 | [12:0] | First zero of the TCFU |- | L2 | [12:0] | 0x05 | RW | 0x00 | [12:0] | Second zero of the TCFU |- | L3 | [12:0] | 0x06 | RW | 0x00 | [12:0] | Third zero of the TCFU |- | L4 | [12:0] | 0x07 | RW | 0x00 | [12:0] | Fourth zero of the TCFU |- | ZSTHR | [19:0] | 0x08 | RW | 0x0A | [9:0] | Zero suppression threshold |- | | | | RW | 0x00 | [19:10] | Zero suppression offset |- | ZSCFG | [6:0] | 0x09 | RW | 0x02 | [1:0] | Glitch filter, minimum accepted pulse |- | | | | RW | 0x07 | [4:2] | Post-samples |- | | | | RW | 0x03 | [6:5] | Pre-samples |- | VFPED | [19:0] | 0x0A | RW | 0x00 | [9:0] | BC1 Fixed pedestal |- | | | | R | 0x00 | [19:10] | BC1 variable pedestal |- | CTE | [9:0] | 0x0B | RW | 0x00 | [9:0] | Channel specific noise |- | PMDTA | [9:0] | 0x0C | RW | 0x00 | [9:0] | Data to be stored in the pedestal memory |} == Global registers == These are global registers and does not accept broadcast commands.<br /> {| class="wikitable" ! Register name ! ! Address ! Type ! Default value ! ! Description |- | PMADD | [9:0] | 0x0D | RW | 0x00 | [9:0] | Pedestal memory address |- | BC2THR | [19:0] | 0x0E | RW | 0x03 | [8:0] | Lower threshold of moving average filter |- | | | | RW | 0x03 | [17:9] | Higher threshold of moving average filter |- | | | | RW | 0x01 | [19:18] | Number of taps in moving average filter |- | TRCFG | [19:0] | 0x0F | RW | 0x00 | [7:0] | Number of pre-samples (Pretrigger delay), max 191 |- | | | | RW | 0x3FD | [17:8] | Number of samples per event, max 1021 |- | DPCFG | [11:0] | 0x10 | RW | 0x00 | [3:0] | BC1 mode, see ALTRO manual |- | | | | RW | 0x00 | [4] | BC1 polarity |- | | | | RW | 0x07 | [6:5] | BC2 pre-samples |- | | | | RW | 0x07 | [10:7] | BC2 post-samples |- | | | | RW | 0x01 | [1] | BC2 moving average filter enable |- | VACFG | [7:0] | 0x11 | RW | 0x00 | [1:0] | Number of neighbors, not in use |- | | | | RW | 0x01 | [3:2] | Number of serial out, see table 1.5 |- | | | | RW | 0x00 | [4] | Pedestal mode enabled (zero suppression threshold 0) |- | | | | RW | 0x01 | [5] | Power save mode enabled |- | | | | RW | 0x00 | [6] | TCFU enabled |- | | | | RW | 0x01 | [7] | Continuous mode enabled |- | BC1THR | [13:0] | 0x12 | RW | 0x03 | [4:0] | Lower threshold of variable pedestal filter |- | | | | RW | 0x03 | [9:5] | Higher threshold of variable pedestal filter |- | | | | RW | 0x01 | [13:10] | Number of taps in variable pedestal filter |- | TRCNT | [15:0] | 0x13 | R | 0x00 | [15:0] | Trigger count |- | HWADD | [4:0] | 0x14 | R | 0x00 | [4:0] | Chip address (hardware address) |- | ERRORS | [5:0] | 0x15 | R | 0x00 | [0] | Parity error in received instruction |- | | | | R | 0x00 | [1] | Instruction error |- | | | | R | 0x00 | [2] | Trigger overlap |- | | | | R | 0x00 | [3] | SEU in MMU SM (not implemented) |- | | | | R | 0x00 | [4] | SEU in interface SM (not implemented) |- | BXCNT | [19:0] | 0x16 | R | 0x00 | [19:0] | Bunch crossing counter |} == Command registers == These are command registers and can only be written to. The value doesn’t matter as only the access is detected.<br /> {| class="wikitable" ! Register name ! Address ! Type ! Description |- | SWTRG | 0x1B | W | Software trigger (not implemented) |- | TRCLR | 0x1C | W | Clear trigger counter |- | ERCLR | 0x1D | W | Clear errors |- | BXCLR | 0x1E | W | Clear bunch crossing counter |- | SRST | 0x1F | W | Software reset |} [[Category:Mikroelektronikk]] fdcff9f54eefccf0a0f158aa3b6293c2202b4177 SAMPA 0 467 2504 2421 2017-09-15T13:15:12Z Fli091 93 Added [[Category:Mikroelektronikk]] wikitext text/x-wiki == SAMPA MPW1 documentation == <center>[[Image:sampa.png]]</center> <pre style="color: red"> This page has moved to https://twiki.cern.ch/twiki/bin/view/ALICE/SAMPA</pre> [[Category:Mikroelektronikk]] 6d5ca13c9de9abd7df09044383661f5fe5235755 Synthese av VHDL - Oppdatert 0 539 2505 2280 2017-09-15T13:15:38Z Fli091 93 Added [[Category:Mikroelektronikk]] [[Category:VHDL]] wikitext text/x-wiki Obs! Fra Quartus Prime Handbook: Gate-level timing simulation of an entire design can be slow and should be avoided. Gate-level timing simulation is supported only for the Stratix IV and Cyclone IV device families. Use TimeQuest static timing analysis rather than gate-level timing simulation. ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneIV-chip. Vi valgte EP4CE115F29. Det er chipen på Terasic DE2-115. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. I simulation/modelsim/ finner vi nå add_sub_alu.vho og add_sub_alu_vhd.sdo. Vho-filen(VHDL Output File) er filen som inneholder nå det opprinnelige designet, men også mange nye moduler med cycloneive-prefix. Disse entitetene beskriver ressurser på den fysiske FPGA-chipen. Sdo-filen(Standard Delay Format Output File) inneholder detaljer om delay fra hver modul på chippen. ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila for designet add_sub_alu.vhd og testbenken alu_tb.vhd. Så legg vi til fila som Quartus generte i prosjektdir til simulation/modelsim/add_sub_alu.vho. Den Quartus-genererte filen vil ha samme entitetsnavn som den opprinnelige, og vil derfor ikke kunne simuleres samtid. Vi endrer derfor den genererte filen til å ha entiteten 'add_sub_alu_synth' og architecturen 'structure' (i vårt tilfelle endret den seg til structure automatisk). Vi kan nå kompilere filene våre og deretter simulere testbenken. I testbenken vår ser vi at vi har kalt den syntiserte entiteten alu_synt. Dette skal vi bruke nå. ==Simulering med timing== Velg Start Simulation - deretter work og alu_tb. Se så på SDF-fanen. Legg til add_sub_alu_vhd.sdo generert av Quartus tidligere. Under apply to region må du skrive: /alu_tb/alu_synt Dette er altså området vi ønsker at sdo-filen skal gi informasjon om. Trykk så OK. add wave * run -all Vi kan nå sammenligne utsignalene for den usyntiserte og den syntiserte ALU-komponenten. ==Konklusjon== Vi ser at vi får masse feil før 50 ns. Dette skyldes at den opprinnelige komponenten ikke har definerte signaler før de første klokkeflankene, mens den syntiserte komponenten ikke kan ha udefinerte signaler. Senere får vi feil når signalene skifter. Dette skyldes at den syntiserte komponenten bruker lengre tid på å sende ut riktig signal, og vil også glitche mellom verdier før den stabiliserer seg på riktig verdi. ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] [[Category:VHDL]] ff53e12770109ac10af013580262902acec300e8 VHDL 0 315 2506 1365 2017-09-15T13:16:51Z Fli091 93 Added [[Category:Mikroelektronikk]] [[Category:VHDL]] wikitext text/x-wiki ==Modeling concept== there are 3 domains of modeling: * function * structure * geometry each provides a basic modeling concept. a module e.g. a register is an '''entity''', it's inputs ans outputs are called '''ports'''. an '''architecture''' is the internal implementation of an entity. it describes the behavior of an entity. architectures includes only '''processes''', collection of actions which are executed in sequences. types of action that can be performed: * evaluating expressions * assigning variables and values * conditional and repeated execution * subprogram calls '''''behavioral architecture''''': function of an entity is described in an abstract way. e.g. <pre> entity srlatch is port ( s,r : in std_logic; q,qb : out std_logic); end srlatch; architecture behave of calc is begin foo: process begin Q <= S nand QB; QB <= R nand Q; end process foo; end architecture behave; </pre> '''''structural architecture''''': only interconnecting subsystems <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; entity nand2 is port( a,b : in std_logic; q : out std_logic); end nand2; architecture basic of nand2 is begin q <= a nand b after 2 ns; end basic; </pre> <pre> entity srlatch is port( s,r: in std logic; q,qb: out std_logic); end srlatch; architecture struct of srlatch is begin sq: entity work.nand2(basic) port map ( a => s, b => qb, q => q ); rq: entity work.nand2(basic) port map ( a => r, b => q, q => qb ); end architecture struct; </pre> ===subprograms=== subprograms are '''procedures''', a collection of statements executed for their effect, and '''functions''', a collection of statements to compute a result. ====procedures==== variables etc. defined in the header are local variables. <pre> procedure proc_name is variable total : real :=0.0; --this is a local variable! begin for index in samples loop total = total +sample(index); end loop; answer:=total; end procedure proc_name; </pre> procedures without parameters is called by it's name from any place in architecture. other procedures can also call procedures in their body. <pre> proc_name; </pre> it is possible to use procedures with parameters. ====functions==== generalization of expressions, combined values with operators and produce new values. the type of result is specified. <pre> function limit (val, min, max: integer) return integer is begin if val > max then return max; elseif val < min then return min; else return val; end if; end function; </pre> a function is called in the architecture like this: <pre> newval := limit(current_val, 10, 100); newval2 := 2 + limit(current_val, 10, 100); </pre> ===Packages=== grouping a collection of related declarations to serve common purpose. seperat design units that can be worked on independently, reused in different parts of design. the can be written along with entities and architecture and are analyzed separately. it is also possible to place a package in an other library, in that case the lib "work" has to be replaced by the lib including the package. the external view is specified in the '''package declaration''', the implementation is defind in the '''package body'''. ====package declaration==== the package declaration hosts type, constand, subprogram, signal ... declarations which are shared within the model. it defines the interface to a package. in the model then you just need to refer to the package: <pre> package yourpackagename is --declaration constant foo: std_logic_vector(7 downto 0) := X"01"; type foobar is array (foobar2) of somethingelse; end package yourpackagename; </pre> <pre> use yourpackagename.all; entity yourentityname is port ( fooport : in work.yourpackagename.foo; foobarport : in work.yourpackagename.foobar; ); end entity yourentityname; </pre> ====package body==== no package body is needed if pkg declaration contains other kinds of declarations like types, signals or fully specified constants. in case of subprograms body needed to fill in missing informations. items declared in body must include full declaration of subprograms as they are in the pkg declaration. that means that types, modes, default constants... must bee repeated exactly. ===components=== to build hierarchical designs, used to describe interconnections in subsystems in a design. component declarations are written in the declarative part of the architecture (before the ''begin''). it is an alternative to use entity declarations (see structural design). an entity declaration defines a real module, it's a separate design. a component declaration defines a virtual module in the architecture body. "for this architecture we assume there is a module specified by this component". ===configurations=== in a configuration file the declaration can be made in which case which entity is using which architecture. the architectures may vary e.g. in case of simulation or synthesis. A '''configuration declaration''' is a design unit which can be compiled separately. In a configuration declaration the binding of all components which are part of a certain entity can be specified. also generic maps can be set. <pre> configuration config_identifier of entity_name is for architecture_name for all : component_identifier use entity lib_name.entity_name2(architecture_name2); --binding_indication end for; for bgo_channel_1 : bgo_channel use entity mxgs_bgo_lib.bgo_channel(struct) generic map( g_bgo_channel => "01" ); end for; end for; end config_identifier; </pre> [[Category:Mikroelektronikk]] [[Category:VHDL]] c74f5081678ee47106e21746e18c989bacced132 VHDL Testbenk 0 35 2507 2093 2017-09-15T13:20:17Z Fli091 93 Added [[Category:Mikroelektronikk]] [[Category:VHDL]] wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> ssh -X mikroserver3 mentor vsim & </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim -voptargs=+acc SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscillasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> Om en legger til testbenk signalene i wave vinduet så får en opp markeringer der hvor det har oppstått feil, rød for error og gul for warning. En kan så trykke på markeringene og få opp feilmeldingen. ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. [[Category:VHDL]] [[Category:Mikroelektronikk]] cf59e45f5a8770be50efa955834620265089918c User:Fli091 2 608 2508 2017-09-15T13:25:12Z Fli091 93 created userpage with email wikitext text/x-wiki [mailto:fli091@uib.no mailto:fli091@uib.no] 831e4d30b6cf682d0e16c2e9d561650da0edc914 Install Vivado 2015.4 with free licens 0 509 2509 2242 2017-09-15T13:26:08Z Fli091 93 Added [[Category:Mikroelektronikk]] [[Category:VHDL]] wikitext text/x-wiki To download Vivado for free you must first create an account. By following this link [http://www.xilinx.com/support/download.html/ Xilinx web page] you will enter Xilinx download page. For this tutorial we will be using the 2015.4 version. To download for Windows Vivado HLx 2015.4 Web Install for Windows with SDK (EXE - 49.32 MB) For linux Vivado HLx 2015.4 Web Install for Linux with SDK (BIN - 76.98 MB) Run the installer and this will show, press next [[File:1.png]] Type your user name and password and press next [[File:2.png]] Agree to everything!!! Or else?!?! [[File:3.png]] Choose Vivado HL WebPACK [[File:4.png]] Make sure the Software Development Kit, Artix-7, Install Cable Drivers, and Acquire or Manage a License Key are all checked and click next. The DocNav file is not necessary but it allows you to * Find answers to your questions quickly through the integrated search * Manage documents on your desktop through the Download Manager * Always ensures you are reading the latest version of documentation Detailed information about using the tool and its features can be found in the Online Help Menu which you can access after installation. [[File:5.png]] Choose a directory to Install you Vivado product, make sure you have adequate free space on your hard drive. [[File:6.png]] The final screen summarizes your selections. Click install, and the installer will begin downloading the files it needs to install Vivado. When it is done this screen will pop up. [[File:7.png]] Click ok and the license manager should open up. If not open Vivado press Help=>obtain a license key and this window will open. Choose “Get Free SDK, Vivado WebPACK” and then press Connect Now. [[File:8.png]] You will be redirected to Xilinx home page were you will need to sign in with user name and password. After clicking “sign in”, press “next” and this site will pop up [[File:9.png]] Choose “Vivado Design Suite: HL WebPACK, Node-Locked License……..” and press Generate Node-Locked License. Next this window will pop up. [[File:10.png]] Click next and a new window will pop up, click next again and this will show [[File:11.png]] Open your E-mail and download the attached Xilinx.lic file. When you go back to the license manager this will show, press cancel. [[File:12.png]] Go to Load License in the left menu. You should see this [[File:13.png]] Click Copy License and upload the Xilinx.lic file and you will get this message [[File:14.png]] If you now press the view license status in the left menu, you should see this [[File:15.png]] You can now close the license manager and Vivado is good to go. [[Category:Mikroelektronikk]] [[Category:VHDL]] 26850cca63cb93b9fa6f5b737800573acc455853 Using the VGA controller with block ram generator and clock wizard 0 538 2510 2273 2017-09-15T13:26:36Z Fli091 93 Added [[Category:Mikroelektronikk]] [[Category:VHDL]] wikitext text/x-wiki If you want to use the vga controller remember to * copy-paste the vga.txt file and save it as vga.vhd * copy-paste the Nexys4_Master.txt file and save it as Nexys4_Master.xdc The vga controller is using a BRAM block to store pixel values. Each pixel has 12-bits and number of pixels projected to the screen is 480x640=307200 * sw_i(15) -- active high, write enable * sw_i(11 downto 0) -- 12-bits for colour changing the screen CREATING NEW PROJECT Press create new project [[File:16.png|400px]] Press next on the first window that pops up, then you can choose were you want to store your project, click next. [[File:17.png|400px]] Choose RTL project and click next [[File:18.png|400px]] Add your VHDL file if you have one, if you don’t you can add the VGA-controller file just to make sure that everything works properly. Click next [[File:19.png|400px]] Click next [[File:20.png|400px]] Add the Nexys4_Master.xdc , this will connect all your I/O, LED, SW etc. [[File:21.png|400px]] Choose the xca100tcsg324-1 and click next and then finish. [[File:22.png|400px]] Vivado will open, now you can make your own VHDL code or you can follow instruction further if you want to use the VGA controller. If you want to make your own code you can skip the IP part and go to generate bitstream to see how you should implement your code on the FPGA. [[File:23.png|400px]] Adding IP’s, clk generator 25.2MHz and BRAM. Click IP Catalog and then [[File:24.png|400px]] Search for Clocking Wizard and enter and this will pop up, clocking option should look like this, remember to change the Component name! [[File:25.png|400px]] Change the output clock to 25.2MHz [[File:26.png|400px]] Port renaming: use names that explains your component, and click OK [[File:27.png|400px]] This should pop up, click generate [[File:28.png|400px]] Adding BRAM, search for bram and enter the Block Memory Generator and this should pop up. Remember component name [[File:29.png|400px]] Port A Options, write width = 12bits, write depth = 307200=(480*640 pixels projected on screen), then click OK and then generate as before and wait until the synthesis is done. [[File:30.png|400px]] GENERATE BITSTREAM: click generate bitstream [[File:31.png|400px]] If this pops up click yes [[File:32.png|400px]] If this message shows, just click ok, it only means that you have pins activated in your Nexys4_Master.xdc that are not in use. [[File:33.png|400px]] If later on want to change witch pins are active on your board you can configure this by entering the Nexys4_Master.xdc [[File:34.png|400px]] When completed, choose “Open Hardware Manager” and click ok [[File:35.png|400px]] At this point connect your NEXY4 board . In the left menu under “program and debug”, click open target => open new target [[File:36.png|400px]] Open new Hardware target will pop up, click next two times and this will show. Choose JTAG clock freq. 30 000 000, click next and then finish [[File:37.png|400px]] Now you can program your device, click program device and choose your FPGA [[File:38.png|400px]] Click program and your device is ready to go. [[File:39.png|400px]] [[Category:Mikroelektronikk]] [[Category:VHDL]] d521b94e988572c76a527825a8ea022d6911d5a4 Category:VHDL 14 609 2511 2017-09-15T13:27:58Z Fli091 93 First try to create a VHDL subcategory for mikroelektronikk wikitext text/x-wiki [[Category:Mikroelektronikk]] 6a9f88834be2fc317820f4d288308bd501dad335 Cadence Testbench 0 478 2512 2430 2017-09-15T13:29:53Z Fli091 93 Fli091 moved page [[Testbench]] to [[Cadence Testbench]]: Renamed so its understandable which testbench its about wikitext text/x-wiki = Simulate with corner cases = To simulate with the corner cases in the fabrication process you have to add the corner files provided in the design kit. [[File:Selection_001.png|200px]] Choose "Click to add corner" "Click to add" the model files you need. Ex. The corner files for the MOS transistor in IHP130nm process is located in $IHP_TECH/tech/SG13_MOS/library/spectre/cornerMOSlv_psp.scs After adding the model files needed proceed by adding multiple corners: [[File:corner.png|400px]] The model files contains sections with the different corners. Choose sections and make sure you enable the section "tick box" and name the corner with a corresponding name: [[File:sections.png|400px]] The corners setup also makes it possible to simulate for different temperatures or design variables like VDD and transistor length. Ex. test for three different temperatures with comma as separation: -20,30,80 [[File:complete.png|400px]] [[Category:Mikroelektronikk]] 88475807ac85f18a872b99cc54d478f7a2000128 Testbench 0 610 2513 2017-09-15T13:29:53Z Fli091 93 Fli091 moved page [[Testbench]] to [[Cadence Testbench]]: Renamed so its understandable which testbench its about wikitext text/x-wiki #REDIRECT [[Cadence Testbench]] 275966762fc5e206b130547b9791708b1b7d94f1 IHP 130nm process 0 472 2514 2426 2017-09-15T13:30:22Z Fli091 93 Added [[Category:Integrated_Circuts]] wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to one of the mikroservers: ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2016-17/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To create a command that will do this for you try this command: echo "alias startVirtuoso='source /eda/cadence/2016-17/scripts/analog_flow.sh && cd ~/ihp/cds/ && source sh.cadence && virtuoso &'" >> ~/.bashrc Typing 'startVirtuoso' in the terminal will execute these four commands Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 2751a02e3df65a202cba25fe8112ba0429e7c45b 2528 2514 2017-10-10T14:02:41Z Fli091 93 Specified mikroserver2 or mikroserver3 (1 does not work atm) wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to server (mikroserver2 or mikroserver3): ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2016-17/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To create a command that will do this for you try this command: echo "alias startVirtuoso='source /eda/cadence/2016-17/scripts/analog_flow.sh && cd ~/ihp/cds/ && source sh.cadence && virtuoso &'" >> ~/.bashrc Typing 'startVirtuoso' in the terminal will execute these four commands Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] f6ff5b4362c533db2b072d75e151a60dc0932175 2548 2528 2017-10-30T14:19:48Z Fli091 93 Removed uneccesary bash alias and linked to the setup page instead. wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to server (mikroserver2 or mikroserver3): ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2016-17/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] 5e9e64b73ec7245fabc44880668f8936f6b7c2ef AMS 350nm process 0 460 2515 2428 2017-09-15T13:30:37Z Fli091 93 Added [[Category:Integrated_Circuts]] wikitext text/x-wiki =Cadence design with AMS 350nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process using a combination of cadence and mentor tools. Here is the outline of the analog IC design flow: 1. Schematic capture (Cadence tool) 2. Netlist extraction from schematic 3. Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) 4. Layout using Cadence 5. Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 csh source /prog/cadence/cadence_init.csh ams_cds_start Virtuoso Mixed Signal Design Environment should now start up. In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose TECH_C35B4. After successfully creating the new library, it is time to create your first design. In the log windowox, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a checkmark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: 1. Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "PRIMLIB" as library, "nmos4" (for n-type transistor) or "pmos4" (for p-type transistor) as cell and "spectreS" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. 2. To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. 3. To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). 4. To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. 5. To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. 6. To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs, choose direction and click on the schematic to place it. Create one input and one output. 7. To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. 8. To check and save the schematic, press 'x' or click the "Check and save" icon. 9. If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 10. Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== 10. Choose "Create > Test..." select the cell to simulate. 11. Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. 12. Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] 13. Choose "Simulation > Debug". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" to save your state information under whatever file namn you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should allready be connected to the right positions in the symbol generator, so press ok here also and ths symbol editor will occur. Press the red X and delete the precreated green square. Use the line tool and the circle tool to create the inverter symbol- [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 9bb212007b672b1af392340d19124011ee978389 ADEXL-butterfly-curves 0 555 2517 2431 2017-09-15T13:31:14Z Fli091 93 Added [[Category:Integrated_Circuts]] wikitext text/x-wiki To create a butterfly curve, for example for characterizing SRAM read and hold margins, simulate a single DC sweep (one source, one sweep) on a input. Plot both the input (shows up as a straight line for a linear DC sweep) and the output (shows up as the DC response of your circuit). Have both plots in the same subwindows. go to Axis -> Y vs Y choose the first trace, press ok. go again to Axis -> Y vs Y choose the second trace, press ok. Put both results in the same plot, and you are finished. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 6dd05796414dd41887556e2dc6bab58dc32c0de4 Cadence Virtuoso overview 0 38 2518 2442 2017-09-15T13:31:28Z Fli091 93 Added [[Category:Integrated_Circuts]] wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 8f0d5a843f69ba56dc15d2bc9ab1c19114484503 2533 2518 2017-10-14T14:15:27Z Fli091 93 Added link to setup of mikroservers wikitext text/x-wiki =Analog IC design flow using Cadence from basics (Schematic capture, Netlist extraction, Simulating using ELDO, Layout, Signoff Layout)= [[ TSMC 130nm process ]] [[ IHP 130nm process ]] [[ AMS 350nm process ]] = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[MikroserverSetup]] - setup for easy connection to the mikroservers and Cadence Virtuoso [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 61e86fa1e9fb2c49214cceb213bbc99b4ee2f0b3 2542 2533 2017-10-18T10:37:51Z Fli091 93 Some text to the different IC processes wikitext text/x-wiki = IC design flow using Cadence = We have access to several silicon technologies from different foundries * 130nm CMOS process from Taiwan Semiconductor Manufacturing: '''[[ TSMC 130nm process ]]''' * 130nm SiGe process from Innovations for High Performance Microelectronics: '''[[ IHP 130nm process ]]''' * 350nm CMOS process from Austria Mikro Systeme: '''[[ AMS 350nm process ]]''' = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[MikroserverSetup]] - setup for easy connection to the mikroservers and Cadence Virtuoso [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 9e102806f8eaaddfa1bc8a9ed3908a7b7815e844 Cadence Virtuoso setup 0 415 2519 2440 2017-09-15T13:31:42Z Fli091 93 Added [[Category:Integrated_Circuts]] wikitext text/x-wiki = New single script install = Edit the europractice_installer.sh and change INST_DIR=/eda to INST_DIR=/prog (ignore the warning of changing install paths){{-}} Run "source europractice_installer.sh" and wait until done.{{-}} Check in the /prog/cadence/20xx-xx/script folder if there is a IC, VIPCAT and ASSURA script in there, if not modify the release versions and add the following snippet in a file called cadence_missing.csh <source lang="tcl"> setenv YEAR 2014-15 setenv $CDS_INST /prog/cadence/$YEAR/RHELx86 setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_OVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_VIPCAT $CDS_INST/VIPCAT_11.30.029_UVM setenv PATH "${PATH}:${CDS_VIPCAT}/tools/bin" if ( $?SPECMAN_PATH == 0) then setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages" else setenv SPECMAN_PATH "${CDS_VIPCAT}/utils:${CDS_VIPCAT}/packages:${SPECMAN_PATH}" endif alias help_cds_vipcat '$CDS_VIPCAT/tools/bin/cdnshelp &' # setenv CDS_ASSURA $CDS_INST/ASSURA_04.14.111_IC616OA setenv ASSURAHOME $CDS_ASSURA #the following line might be completely redundant setenv SUBSTRATESTORMHOME $ASSURAHOME # For Assura-RF setenv LANG C setenv PATH "${PATH}:${CDS_ASSURA}/tools/bin" setenv PATH "${PATH}:${CDS_ASSURA}/tools/assura/bin" setenv PATH "${PATH}:${SUBSTRATESTORMHOME}/bin" setenv ASSURA_AUTO_64BIT ALL alias help_cds_assura '$CDS_ASSURA/tools/bin/cdnshelp &' # assura setenv CDS_IC $CDS_INST/IC_6.1.6.080 # This line is required by the some design kits... setenv CDSDIR $CDS_IC # When using ADE set netlisting mode to analog ("dfIIconfig.pdf"), p16. setenv CDS_Netlisting_Mode Analog setenv MG_ENABLE_PTOT true # Required for tutorial material and cadence libraries (eg analogLib) setenv CDSHOME $CDS_IC setenv CDS_USE_PALETTE setenv PATH "${PATH}:${CDS_IC}/tools/bin" setenv PATH "${PATH}:${CDS_IC}/tools/dfII/bin" alias help_cds_ic '$CDS_IC/tools/bin/cdnshelp &' </source> Run the following to generate the startup script <source lang="tcl"> setenv YEAR 2014-15 # Fix path sed -i 's/eda/prog/g' /prog/cadence/$YEAR/scripts/*.csh # Fix non existent manpath sed -i 's/setenv MANPATH/#setenv MANPATH/g' /prog/cadence/$YEAR/scripts/*.csh chmod +x /prog/cadence/$YEAR/scripts/*.csh # Add all scripts to one fil ls /prog/cadence/$YEAR/scripts/*.csh > /prog/cadence/cadence_$YEAR\_init.csh # Add source to each line sed -i -e 's/^/source /' /prog/cadence/cadence_$YEAR\_init.csh echo 'source /prog/cadence/eda_general_init.csh' >> /prog/cadence/cadence_$YEAR\_init.csh chmod +x /prog/cadence/cadence_$YEAR\_init.csh ln -s /prog/cadence/cadence_$YEAR\_init.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh </source> The content of eda_general_init.csh is <source lang="tcl"> setenv CDS_LIC_FILE 5280@vlsi.ift.uib.no setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' </source> Run checksys.sh script given at end of this page. = Old install method= == Update install manager == Always update install manager if a newer exists or else installations may fail. cd /prog/cadence/ mkdir iscape tar zxvf /prog/download/download.msc.rl.ac.uk/Cadence/2012_2013/ISCAPE/lnx86/iscape_VERSION == Extract downloaded files == cd /prog/cadence/ mkdir download cd download find /prog/download/download.msc.rl.ac.uk/Cadence/ -name '*.tar' | xargs -l tar xvf == Run install manager == /prog/cadence/iscape/iscape/bin/iscape.sh& == configure install manager == preferences -> directories{{-}} Set default install directory to{{-}} /prog/cadence == install/update program with install manager == For new installs, follow the install instructions provided by europractice in addition to the tips from this guide. Correct directory naming reduces the amount of editing of the settings file later. * Press the icon which has the text "local directory/media install" * Select browse and navigate to the directory containing the install files and select the CDROM1 folder. *Check that there isn't a slash at the end of the path. The program doesn't search recursively. fex: /prog/cadence/unpacked/ASSURA04.12.020-5141_lnx86.Hotfix/CDROM1 *You don't need to install all updates recursively, select only the latest hotfix and the install will ask for the path to the base install when it is needed. If there are no hotfixes, install the base install. *Select the correct path to install to, keep the existing naming convention. *If a window opens with "Welcome to OpenAccess.....", just press enter and then 'n' and then enter again. *If a window opens which asks about configuring the license server, press n. *When the install is finished and you are back in the result list, you need to press the small underlined cancel text to change the path. *To make make less changes to the environment script later run this command and use the provided paths in the installation. The CDS_INST path will be changed later. cat /prog/download/download.msc.rl.ac.uk/Cadence/2013_2014/cadence_ic_2013.csh | grep CDS_INST == Package specifics == === INCISIVE === When doing a full install, INCISIVE needs to be installed first as it is required by IC. Press cancel when the ARM license file dialog shows. === ASSURA === There are two versions ASSURA*-615 and ASSURA*-5141. 5141 is for compability with IC5 (CDB). 61 is for use with IC6 (OA). === VIPCAT === Choose UVM as the packet to install for IP verification == Configuration == If a new install, then copy the template script called "cadence_ic_20xx.csh" from the download folder to the /prog/cadence folder. Line references following will be based on the 2012 release of the file. Check that actual folder names are correct. *24 - Set correct license server at line *27 - Set CDS_INST to /prog/candence *37 - Set ALTOS path to /ALTOS/altos_rel3.2p3 *57 - Set ASSURA path to /ASSURA_4.12_CDB if using IC5, /ASSURA_4.12_OA if using IC6 *72/74 - Comment/uncomment line according to IC version *83 - Set to correct MVS folder (correct according to install instructions) *110 - Set to correct IC6 folder (correct according to install instructions) *151 - Set to correct ICC folder (correct according to install instructions) *188 - Set PVE path to /PVE_11.12HF106 *213 - Set Conformal path to /CONFORMAL_11.10 *229 - Set to correct RCL folder (correct according to install instructions) *243 - Set EDI path to /EDI_11.1 *258 - Set to correct ET folder (correct according to install instructions) *274 - Set to correct ETS folder (correct according to install instructions) *293 - Set MMSIM path to /MMSIM_11.10 *315 - Set INCISIVE path to /INCISIVE_12.1 *387 - Set VIPCAT path to /VIPCAT_11.3.014 *411 - Set CTOS path to /CTOS_12.1 If you correctly set the directories like specified above you can skip editing the paths to the specific programs and only change the one for CDS_INT. Include these lines at the bottom setenv AMS_DIR /path/to/amslib setenv TSMC_DIR /path/to/tsmc setenv PATH "${PATH}:${AMS_DIR}/cds/bin" setenv CDS_BIND_TMP_DD true setenv IUSDIR $CDS_INCV alias ams_cds_start 'setenv AMS;ams_cds -tech c35b4 -nologo' alias tsmc_cds_start 'unsetenv AMS;virtuoso &' Save file as cadence_ic_20xx_uib.csh and add/update the symlink csh chmod +x /prog/cadence/cadence_ic_20xx_uib.csh ln -s /prog/cadence/cadence_ic_20xx_uib.csh /prog/cadence/cadence_init.csh source /prog/cadence/cadence_init.csh Run lmstat to check that it is possible to connect to the license server lmstat -c 5280@<your licenceserver> Both cdslmd and altosda should be listed as up. Run the checksys.sh script listed below to check for any missing dependencies and to set up any missing tools links. In case the scipt gives an error like <source lang=text> Configuration checks failed, status is: FAIL checkSysConf cannot reliably parse your systems /etc/redhat-release file It would appear that the file is non-standard and does not contain release information in the standard readable format. The contents of your /etc/redhat-release is listed below between <RELEASE_FILE> tags. A 'correct' release file should have only one line of content, containing version information in a standard format. <RELEASE_FILE> Red Hat Enterprise Linux Server release 5.9 (Tikanga) </RELEASE_FILE> Please check/correct your /etc/redhat-release file and try again. There is no OEM datafile for -r for the Linux platform. Valid OEM images are : foreach: No match. </source> then the OS is probably newer than checkSysConf used, copy a newer version from another program folder. If you then get <source lang=text> This operating system version '5.0WS' is not supported If you believe you are running a supported OS then check that the OS version directory exists in the data directory: /<path to cadence>/ICC_11.2.41/share/patchData/Linux/x86_64 </source> Then check the version in the aforementioned folder and the text file inside it. Copy the .cdsinit script below to the folder /prog/cadence/IC_6.X.X.X/tools/dfII/local == Scripts == ===Checksys.sh=== Usefull for setting up missing tools folders and checking that all dependencies are installed <source lang="bash"> #!/bin/bash # # Script for setting up tools folders and checking dependencies # By Arild Velure 2014 # if ( [ -z "$CDS_INST" ] && [ -z "$CDS_TOP" ] ) then echo "Please run environment script first" exit 1 fi # Add new modules if needed #2012 #cds_paths=( $CDS_ASSURA $CDS_MVS $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $RC_PATH $CDS_SOCE #$CDS_ET $CDS_ETS $CDS_MMSIM $incisiv_dir $CDS_VIPCAT $CTOS_ROOT ) #2013 cds_paths=( $ALTOSHOME $CDS_ASSURA $CDS_IC $CDS_ICC $CDS_PVE $CDS_CONFORMAL $CDS_RC $CDS_EDI $CDS_ET $CDS_ETS $CDS_MMSIM $CDS_INCV $CDS_VIPCAT $CTOS_ROOT) # CTOS_ROOT doesn't seem to have a checksysconf #2014 cds_paths=( $CDS_ASSURA $CDS_CONFORMAL $CTOS_ROOT $CDS_EDI $CDS_ET $CDS_EXT $CDS_IC $CDS_INCV $ALTOSHOME $CDS_MMSIM $CDS_MVS $CDS_PVS $CDS_RC $CDS_SSV $CDS_VIPCAT ) # CDS_ASSURA CDS_IC and CDS_VIPCAT needs manual script if [ -e ./problems.txt ] then rm ./problems.txt fi # Some installers forget to link the tools folder to the tools.lnx86 # Creat links so we don't need to edit and check settings file for i in "${cds_paths[@]}" do if [ ! -e $i ] then echo "Can't find path $i is it installed?" continue fi if [ ! -e $i/tools ] then if [ -e $i/tools.lnx86 ] then ln -s tools.lnx86 $i/tools fi fi # Run checksys to check that system is properly installed echo "Checking $i" if [ ! -e $i/tools/bin/checkSysConf ] then echo "checkSysConf not found" continue fi # You need to specifically mention the name of the release to test for. # Next line parses the output and grabs all lines which starts with a space and contains # some characters, which should only be release names, and puts them in an array proglist=($($i/tools/bin/checkSysConf -r | egrep '^ +\w')) # If it returns empty it propably didn't find a supported OS version if [ ${#proglist[@]} = 0 ] then $i/tools/bin/checkSysConf -r >> problems.txt echo "FAIL, couldn't find releasename" fi for a in "${proglist[@]}" do echo "Prog version $a" result=$($i/tools/bin/checkSysConf $a -q) echo "$result" if [ "$result" = "FAIL" ] then #Something failed, run again with verbosity $i/tools/bin/checkSysConf $a >> problems.txt fi done done if [ -e ./problems.txt ] then echo "Missing modules:" cat ./problems.txt | grep FAIL fi </source> ===.cdsinit=== <source lang="autohotkey"> ; AMS runs a script before starting virtuoso which creates a local .cdsinit in the current folder ; load the local .cdsinit if the program was started with the variable AMS set else load TSMC settings if(getShellEnvVar("AMS") then loadi("./.cdsinit") else ;if( ddIsId( ddGetObj( "tsmc13rf" ) ) then printf("********************************************\n") printf(" Starting TSMC 130nm \n") printf("********************************************\n") ddCreateLib( "tsmc13rf" strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf")) loadi(strcat(getShellEnvVar("TSMC_DIR") "/tsmc13rf/libInit.il")) ) </source> == Linux packages that might be required == *openmotif22 *libXp *compat-readline43 *tk *ksh *sysstat [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 59f57c3ffbc7ad2ae940c9e792fd4b9663da7d4e TSMC 130nm process 0 461 2520 2427 2017-09-15T13:31:55Z Fli091 93 Added [[Category:Integrated_Circuts]] wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 source /eda/cadence/cadence_init.sh First time you should add the following line to your cds.lib file before starting the design environment. If the ~/cds.lib doesn't exist, just create it. DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf Virtuoso Mixed Signal Design Environment is started by issuing this command: tsmc_cds_start In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. # Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] # Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] d5a4504b3fa21022f2bda37d617e35c0f6f7dd3b 2530 2520 2017-10-13T07:04:38Z Fli091 93 Put "first" in bold and added command to echo define into cds.lib wikitext text/x-wiki =Cadence design with TSMC 130nm process= ==Starting up== This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ssh -X mikroserver2 source /eda/cadence/cadence_init.sh '''First''' time you should add the following line to your cds.lib file before starting the design environment. If the ~/cds.lib doesn't exist, just create it. echo "DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf" > cds.lib Virtuoso Mixed Signal Design Environment is started by issuing this command: tsmc_cds_start In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. # Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] # Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] dd4612fbf2191d12203d8675b48bbc5a1380c824 2531 2530 2017-10-13T10:00:24Z Fli091 93 Updated the setup. Now it works! wikitext text/x-wiki =Cadence design with TSMC 130nm process= This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ==Setup of Cadence== To start virtuoso one must first connect to mikroserver3 ssh -X mikroserver3 '''First''' time you should add the following line to your cds.lib-file by running this command: mkdir ~/tsmc echo "DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf" > ~/tsmc/cds.lib Then ('''each time''') run these commands to set up Cadence source /eda/cadence/2016-17/scripts/analog_flow.sh source /eda/cadence/eda_general_init.sh Virtuoso Mixed Signal Design Environment is started by issuing this command: virtuoso & === Troubleshooting === * Make sure you source the script from the correct year. I.e 2016-17 and not 2015-16 * Make sure you are connected the the right mikroserver * Make sure you run virtuoso from the same folder as your 'cds.lib'-folder ('~/tsmc/') == Getting started == In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. # Then open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. ==Simulating the design== # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] # Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 93aecfaabfa864c9534277c66ebcb9f580e51a9c Transistor operating point printer 0 466 2521 2108 2017-09-15T13:32:07Z Fli091 93 Added [[Category:Integrated_Circuts]] wikitext text/x-wiki This script can be used to print the operating point parameters of all transistors in your design. Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a Debug Test with DC analysis: [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> The results file can also be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 4fe5983fe4c21163bcf52f47b2fa098fc9682097 2546 2521 2017-10-23T14:53:53Z Fli091 93 Added sed command to convert transistors.csv wikitext text/x-wiki = DC operating parameters from simulation = This script can be used to print the operating point parameters of all transistors in your design. Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a Debug Test with DC analysis: [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> The results file can also be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] == Importing the data into LibreOffice == To use transistors.csv one has to get rid of the postfixes for the SI units generated from Virtuoso (m, f, K etc). To do this navigate to the folder with the transistors.csv and type this command: sed -e 's/\([0-9]\+\)m/\1E-3/g' -e 's/\([0-9]\+\)u/\1E-6/g' -e 's/\([0-9]\+\)n/\1E-9/g' -e 's/\([0-9]\+\)p/\1E-12/g' -e 's/\([0-9]\+\)f/\1E-15/g' -e 's/\([0-9]\+\)a/\1E-18/g' -e 's/\([0-9]\+\)z/\1E-21/g' -e 's/\([0-9]\+\)y/\1E-24/g' -e 's/\([0-9]\+\)K/\1E+3/g' -e 's/\([0-9]\+\)M/\1E+6/g' -e 's/\([0-9]\+\)G/\1E+9/g' -e 's/\([0-9]\+\)T/\1E+12/g' transistors.csv > transistors_fixed.csv That converts transitors.csv to transistors_fixed.csv where all the SI-symbols has been replaced with E-3, E-15, E+3 etc, so the values are useable in LibreOffice [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 875ba28140c49b0ade1e613595b2541103f89759 2547 2546 2017-10-26T19:44:30Z Fli091 93 Added a script and description to get the file out from mikroserver and convert it to useable data wikitext text/x-wiki = DC operating parameters from simulation = This script can be used to print the operating point parameters of all transistors in your design. == Get the DC operating points from a previous simulation == Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a Debug Test with DC analysis: [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] == Copy the file to your computer and convert the values == After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> or alternatively to get the file out from mikroserver to another computer try this: Create a file named "Makefile" and put this into it: all: get fix clean get : scp fli091@mikroserver3.ift.uib.no:~/tsmc/transistors.csv ~/transistors_raw.csv fix : sed -e 's/\([0-9]\+\)m/\1E-3/g' -e 's/\([0-9]\+\)u/\1E-6/g' -e 's/\([0-9]\+\)n/\1E-9/g' -e 's/\([0-9]\+\)p/\1E-12/g' -e 's/\([0-9]\+\)f/\1E-15/g' -e 's/\([0-9]\+\)a/\1E-18/g' -e 's/\([0-9]\+\)z/\1E-21/g' -e 's/\([0-9]\+\)y/\1E-24/g' -e 's/\([0-9]\+\)K/\1E+3/g' -e 's/\([0-9]\+\)M/\1E+6/g' -e 's/\([0-9]\+\)G/\1E+9/g' -e 's/\([0-9]\+\)T/\1E+12/g' transistors_raw.csv > transistors.csv clean: rm transistors_raw.csv Modify the scp-command to use * The username(and not fli091) in the scp-command * change mikroserver if you are not using mikroserver3. * change the folder on mikroserver where the transistors.csv is created, default is /home/$user/tsmc/ * change the local folder where you want your copy to be placed, default is /home/$user/ A short explanation of the Makefile * The get-target gets the file from mikroserver3 and copies it to your computer in the root of your homefolder * The fix-target converts transitors.csv to a copy where all the postfixes for the SI units generated from Virtuoso (m, f, K etc), has been replaced with E-3, E-15, E+3 etc, so the values are useable in LibreOffice * The clean-target just removes the not-fixed copy Now you can type <code>make</code> in the folder you created the Makefile and the latestst simulation data will appear in your homefolder. == Open the file in Libre Office == The resulting transistors.csv can then be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] == Troubleshooting == For the scp-command to work without password you have to set up your connection as described in [[MikroserverSetup]] [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 140740aff82106513fc65590709b135043704d19 2554 2547 2017-11-01T12:48:38Z Fli091 93 Remember to check the box with "Save DC Operating Point" ! wikitext text/x-wiki = DC operating parameters from simulation = This script can be used to print the operating point parameters of all transistors in your design. == Get the DC operating points from a previous simulation == Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a test with DC analysis, and remember to check the box with "Save DC Operating Point" : [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] == Copy the file to your computer and convert the values == After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> or alternatively to get the file out from mikroserver to another computer try this: Create a file named "Makefile" and put this into it: all: get fix clean get : scp fli091@mikroserver3.ift.uib.no:~/tsmc/transistors.csv ~/transistors_raw.csv fix : sed -e 's/\([0-9]\+\)m/\1E-3/g' -e 's/\([0-9]\+\)u/\1E-6/g' -e 's/\([0-9]\+\)n/\1E-9/g' -e 's/\([0-9]\+\)p/\1E-12/g' -e 's/\([0-9]\+\)f/\1E-15/g' -e 's/\([0-9]\+\)a/\1E-18/g' -e 's/\([0-9]\+\)z/\1E-21/g' -e 's/\([0-9]\+\)y/\1E-24/g' -e 's/\([0-9]\+\)K/\1E+3/g' -e 's/\([0-9]\+\)M/\1E+6/g' -e 's/\([0-9]\+\)G/\1E+9/g' -e 's/\([0-9]\+\)T/\1E+12/g' transistors_raw.csv > transistors.csv clean: rm transistors_raw.csv Modify the scp-command to use * The username(and not fli091) in the scp-command * change mikroserver if you are not using mikroserver3. * change the folder on mikroserver where the transistors.csv is created, default is /home/$user/tsmc/ * change the local folder where you want your copy to be placed, default is /home/$user/ A short explanation of the Makefile * The get-target gets the file from mikroserver3 and copies it to your computer in the root of your homefolder * The fix-target converts transitors.csv to a copy where all the postfixes for the SI units generated from Virtuoso (m, f, K etc), has been replaced with E-3, E-15, E+3 etc, so the values are useable in LibreOffice * The clean-target just removes the not-fixed copy Now you can type <code>make</code> in the folder you created the Makefile and the latestst simulation data will appear in your homefolder. == Open the file in Libre Office == The resulting transistors.csv can then be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] == Troubleshooting == For the scp-command to work without password you have to set up your connection as described in [[MikroserverSetup]] [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] e4c304b60dc779c43bb6ecf712f8f575e0a58406 2555 2554 2017-11-01T12:51:08Z Fli091 93 Commented the makefile wikitext text/x-wiki = DC operating parameters from simulation = This script can be used to print the operating point parameters of all transistors in your design. == Get the DC operating points from a previous simulation == Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a test with DC analysis, and remember to check the box with "Save DC Operating Point" : [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] == Copy the file to your computer and convert the values == After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> or alternatively to get the file out from mikroserver to another computer try this: Create a file named "Makefile" and put this into it: # target that is the first (and default) and does all the stuff below all: get fix clean # gets the file from mikroserver3 and copies it to your computer in the root of your homefolder get : scp fli091@mikroserver3.ift.uib.no:~/tsmc/transistors.csv ~/transistors_raw.csv # converts transitors.csv to a copy where all the postfixes for the SI units generated from Virtuoso (m, f, K etc), has been replaced with E-3, E-15, E+3 etc, so the values are useable in LibreOffice fix : sed -e 's/\([0-9]\+\)m/\1E-3/g' -e 's/\([0-9]\+\)u/\1E-6/g' -e 's/\([0-9]\+\)n/\1E-9/g' -e 's/\([0-9]\+\)p/\1E-12/g' -e 's/\([0-9]\+\)f/\1E-15/g' -e 's/\([0-9]\+\)a/\1E-18/g' -e 's/\([0-9]\+\)z/\1E-21/g' -e 's/\([0-9]\+\)y/\1E-24/g' -e 's/\([0-9]\+\)K/\1E+3/g' -e 's/\([0-9]\+\)M/\1E+6/g' -e 's/\([0-9]\+\)G/\1E+9/g' -e 's/\([0-9]\+\)T/\1E+12/g' transistors_raw.csv > transistors.csv # removes the not-fixed copy clean: rm transistors_raw.csv Modify the scp-command to use * The username(and not fli091) in the scp-command * change mikroserver if you are not using mikroserver3. * change the folder on mikroserver where the transistors.csv is created, default is /home/$user/tsmc/ * change the local folder where you want your copy to be placed, default is /home/$user/ Now you can type <code>make</code> in the folder you created the Makefile and the latestst simulation data will appear in your homefolder. == Open the file in Libre Office == The resulting transistors.csv can then be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] == Troubleshooting == For the scp-command to work without password you have to set up your connection as described in [[MikroserverSetup]] [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] c18149712f650c23ccc7951536a92883576a4971 2556 2555 2017-11-11T15:21:01Z Fli091 93 Link to another guide wikitext text/x-wiki = DC operating parameters from simulation = This script can be used to print the operating point parameters of all transistors in your design and save them to a file. If you just want to view them in Virtusoso have a look at this guide instead: [[DCoperatingparameters]] == Get the DC operating points from a previous simulation == Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a test with DC analysis, and remember to check the box with "Save DC Operating Point" : [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] == Copy the file to your computer and convert the values == After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> or alternatively to get the file out from mikroserver to another computer try this: Create a file named "Makefile" and put this into it: # target that is the first (and default) and does all the stuff below all: get fix clean # gets the file from mikroserver3 and copies it to your computer in the root of your homefolder get : scp fli091@mikroserver3.ift.uib.no:~/tsmc/transistors.csv ~/transistors_raw.csv # converts transitors.csv to a copy where all the postfixes for the SI units generated from Virtuoso (m, f, K etc), has been replaced with E-3, E-15, E+3 etc, so the values are useable in LibreOffice fix : sed -e 's/\([0-9]\+\)m/\1E-3/g' -e 's/\([0-9]\+\)u/\1E-6/g' -e 's/\([0-9]\+\)n/\1E-9/g' -e 's/\([0-9]\+\)p/\1E-12/g' -e 's/\([0-9]\+\)f/\1E-15/g' -e 's/\([0-9]\+\)a/\1E-18/g' -e 's/\([0-9]\+\)z/\1E-21/g' -e 's/\([0-9]\+\)y/\1E-24/g' -e 's/\([0-9]\+\)K/\1E+3/g' -e 's/\([0-9]\+\)M/\1E+6/g' -e 's/\([0-9]\+\)G/\1E+9/g' -e 's/\([0-9]\+\)T/\1E+12/g' transistors_raw.csv > transistors.csv # removes the not-fixed copy clean: rm transistors_raw.csv Modify the scp-command to use * The username(and not fli091) in the scp-command * change mikroserver if you are not using mikroserver3. * change the folder on mikroserver where the transistors.csv is created, default is /home/$user/tsmc/ * change the local folder where you want your copy to be placed, default is /home/$user/ Now you can type <code>make</code> in the folder you created the Makefile and the latestst simulation data will appear in your homefolder. == Open the file in Libre Office == The resulting transistors.csv can then be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] == Troubleshooting == For the scp-command to work without password you have to set up your connection as described in [[MikroserverSetup]] [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 1788b96760757bfede593cf16b901158d6ade31e Category:Integrated Circuts 14 611 2522 2017-09-15T13:32:50Z Fli091 93 Created mikroelektronikk subcategory integrated_circuits wikitext text/x-wiki [[Category:Mikroelektronikk]] 66d42b439a8971cd09a833910031be094c8fdcb6 ATLASThesesNotes 0 234 2523 2422 2017-09-18T08:50:24Z Nfyst 67 /* Defended Master theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. (can be found via 'Bibsys') === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at ps = 13 TeV * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] 55f0d852a6590f1ad1b5a64bd25d7387e5bfdaf3 2525 2523 2017-09-18T10:34:06Z Nfyst 67 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. (can be found via 'Bibsys') === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] ef0b252c4cee52bd4a3e780578124a20e50a4ff1 2526 2525 2017-09-23T03:05:22Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. (can be found via 'Bibsys') === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 73ee3a9057ced9d9bd80aa85da9167f29e70c13f 2537 2526 2017-10-17T10:27:48Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. (can be found via 'Bibsys') === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 9be99cd5e47025c9c282f295aa5e5cd78e3dae3c File:MasterAssignment-Are.pdf 6 612 2524 2017-09-18T10:32:11Z Nfyst 67 MSc thesis, Are Træaet wikitext text/x-wiki MSc thesis, Are Træaet cabbec68ec1b5d872dc206edb43e94827b7d31ca File:2hdmML.pdf 6 613 2527 2017-09-23T03:05:57Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ParticlePhysicsGroupMeetings 0 139 2529 2372 2017-10-11T15:15:01Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics). This includes 2016-2017 Bergen-Oslo meetings. https://indico.cern.ch/category/7495/ Old and not updated Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here (I still keep it for a while): https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2018 === "Spatind conference", Nordic Bi-annual conference in High Energy Physics, 2-8 January 2018 [https://indico.cern.ch/event/666278/ web page] Please register ASAP. you are (most probably) funded by the HEPP project. === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 5e547c9244de433db695c02432995aa983e586e7 2544 2529 2017-10-19T03:04:19Z Nfyal 26 /* 2018 */ wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics). This includes 2016-2017 Bergen-Oslo meetings. https://indico.cern.ch/category/7495/ Old and not updated Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here (I still keep it for a while): https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2018 === "Spatind conference", Nordic Bi-annual conference in High Energy Physics, 2-8 January 2018 [https://indico.cern.ch/event/666278/ web page] Please register ASAP. you are (most probably) funded by the HEPP project. * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] cef19cf3db59c49840395935782c06c39f4b8b28 MikroserverSetup 0 614 2532 2017-10-14T14:14:14Z Fli091 93 created page wikitext text/x-wiki = Setup of connection to mikroservers and cadence virtuoso = This setup will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or hostnames The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your usename ssh-copy-id USENAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso'&"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso to start cadence virutoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the USERNAME with your usename, i.e "fli091" 6e46bd80252ffa9d01ff199979cc2655eacd7858 2534 2532 2017-10-14T14:15:37Z Fli091 93 Added [[Category:Mikroelektronikk]] wikitext text/x-wiki = Setup of connection to mikroservers and cadence virtuoso = This setup will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or hostnames The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your usename ssh-copy-id USENAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso'&"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso to start cadence virutoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 1a7c4c281dc416f3c4e9bf6422eba98106ff37e7 2535 2534 2017-10-14T14:27:57Z Fli091 93 Fixed typo wikitext text/x-wiki = Setup of connection to mikroservers and cadence virtuoso = This setup will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or hostnames The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your usename ssh-copy-id USENAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso'&"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] e12534123a073e6bda4eeb2fb0d1a880cd65fc8a 2539 2535 2017-10-18T10:19:32Z Fli091 93 TSMC warning and fixed typos wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso'&"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 6b2caad6c1009c224531f1c141568cbe7dc26772 2540 2539 2017-10-18T10:31:23Z Fli091 93 Sourcing the script for IPH in .bashrc wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup source ~/ihp/cds/sh.cadence Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso'&"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 7ccf0a071260fcbd54b09a44f531728e400cf08c 2541 2540 2017-10-18T10:32:14Z Fli091 93 Actually sourcing the IHPscript too wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso'&"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] d104a2d9bb1ad2d4e436aa43e0fbd090e5a6db36 2549 2541 2017-10-30T14:21:23Z Fli091 93 Added a alias for launching IHP directly as the TSMCcommand and renamed the aliases from "virtuoso" to "virtuoso_tsmc" wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 58e09e4ef35c88230cd69c4aa69143b632ac1176 2550 2549 2017-10-31T08:43:56Z Fli091 93 The aliases needed the &. Added it again wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no Do the following: * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no * Set up aliases for the connections in your terminal echo "alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no'" >> ~/.bashrc echo "alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc * source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] ebbc40964e8c6a510cf41170206f0c0f4679592b 2552 2550 2017-10-31T10:51:33Z Fli091 93 Added description to add mikroserver as a folder wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no == SSH key == * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no == Connection aliases == For ease of use set up aliases for the connections in your terminal. Open .bashrc in a text editor (vim / nano) and type in this alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no' alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no' alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no' Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc == Automatic sourcing == Source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc == Commands to run virtuoso remotely == Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3.ift.uib.no/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 7c1b13838bf2b82ed5f72425e186028d20aa7571 2553 2552 2017-10-31T10:53:20Z Fli091 93 How to bookmark the mikroserver folder-connection wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no == SSH key == * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no == Connection aliases == For ease of use set up aliases for the connections in your terminal. Open .bashrc in a text editor (vim / nano) and type in this alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no' alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no' alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no' Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc == Automatic sourcing == Source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc == Commands to run virtuoso remotely == Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3.ift.uib.no/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 8afe4362f2ba60cba6ef59ee94b2e496e26971a8 User talk:Fli091 3 615 2536 2017-10-14T14:29:44Z Fli091 93 Kill the red links wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Manual CRT.pdf 6 616 2538 2017-10-17T10:29:02Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Particle Physics group 0 137 2543 2423 2017-10-19T03:03:13Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] f69afdf53663112d1f1b9e9445cdb1d3411cbfd0 Tips 0 249 2545 942 2017-10-23T09:00:21Z Fli091 93 Added categories / [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] wikitext text/x-wiki ==Estimere delay av en og to invertere i serie== 1. Høyre klikk i cell view i library vinduet og velg "New Cell View". 2. Kall det delay, velg schematic i dropdown menyen og trykk finish. 3. Trykk "Add instance" på venstre side, velg inverteren du nettop laget og trykk OK. 4. Lag tre invertere i serie ved å merke den du la til og trykke C på tastaturet. 5. Velg "Add->Source", merk av DC og sett spenningen til 3.3V 6. Trykk på "HIT-Kit Utilities->AMS Library" på fil-menyen. 7. Legg til VDD og GND. De ligger under "etc->cell power->vdd_g" for VDD og "etc->cell power->gnda_g" for GND 8. Legg til puls kilde ved å velge "Add->Source", merk av PULSE og sett verdiene som vist på bildet. [[File:pulse.jpg|400px]] 9. Legg til kabler som på bildet under. 10. Sett navn på nettet mellom første og andre inverter ved å velge den og trykke på "Net name", kall den out1. Kall nettet mellom inverter 2 og 3 for out2. Kall nettet etter kilden for in. [[File:skjema.jpg|600px]] 11. Trykk "Check & Save". Trykk "HIT-Kit Utilities->Create Viewpoint", trykk navigator og finn frem til mappen der prosjektet dit er i, $navn_på_library/default.group/logic.views/delay Ikke åpne delay mappen, bare merk den. 12. Trykk "Enter simulation mode" og trykk ok på vinduet som kommer opp. 13. Velg "Session->netlister" på høyre side og sjekk at det står gnda i "Set Node 0" feltet. 14. Velg Analysis på høyre side, hak av for transient(ta vekk AC), trykk på setup ved siden av transient og sett stop time til 3n og max step time til 10p. 15. Hold nede CTRL og velg in, out1 og out2 nettene. Trykk så på "Wave outputs" på høyre side. 16. Velg alle nettene under objects, velg TRAN under analysis og trykk på knappen med en tegning av ett ark med et pluss tegn på, trykk krysset for å lukke. 17. Velg "HIT-Kit Utilities->Set simulation models", trykk ok på vinduet. 18. Trykk "Run ELDO" og når det er ferdig å flytte på seg i tekstruten som kommer opp kan du trykke "View waves" 19. Ekspander tran mappen på venstre side, merk alle tre plottene med ctrl, høyreklikk og velg plot stacked. 20. Trykk CTRL+M for å få opp measurement tool. Velg Time domain under measurement. Trykk på V(IN) på plottet i bakgrunnen(uten å lukke measurement tool) og trykk på knappen med bilde av en graf på på linjen til #1. Trykk så på V(Out1) og på knappen til #2. Under Edge trigger trykker du på oppadgående flanke, under edge relationship velger du inverting, hak av for find closest reference edge og trykk apply. Skift edge trigger til nedadgående og trykk apply igjen. 21. Gjør det samme som over men velg V(out2) istedet for V(out1) og skift edge relationship til non-inverting. 22. Du får nå opp tpdf og tpdr på grafen. [[File:graf.jpg]] == Andre tips til oppgaven == Fungerer ikke dynamiske eller statiske vippen? Sjekk at du har plassert clock og clock invers på riktig inngang/riktig transistor, de skifter side fra første til andre ledd. Prøv å bruke Cgs til kalkulering av delay om du ikke får noe fornuftig svar. Når du skal lage clk invers så er det en fordel å ikke bruke en inverter, lag to pulskilder der den ene har et delay like langt som en pulsbredde, ellers så får du et ekstra delay på klokken aka clock skew. Tristate bufferet kan regnes som parasitisk, mao tilfører den 8C på inngangen og utgangen. Transmition gaten kobles opp med source mot kilden. Kobl bulk for nmos til gnd og pmos til VDD. Blir utsignalet bare bølgete rundt VDD så har du for kort pulslengde, hold deg over 2ns. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] bca677cd300bca1931b43717cf3c6605bc5ec63c File:ConnectToServer.png 6 617 2551 2017-10-31T10:41:15Z Fli091 93 Screenshot showing where to click to add a folder on a server wikitext text/x-wiki Screenshot showing where to click to add a folder on a server 12bc5afb1843290b410cc5a810b2ce0e68c3f799 File:PmosWithDCParameters.png 6 618 2557 2017-11-11T15:51:15Z Fli091 93 Picture showing Cadence Virtuso with a pmos with DC operating parameters showing wikitext text/x-wiki Picture showing Cadence Virtuso with a pmos with DC operating parameters showing 5e1098c469da350523cb47e5ef580398d20afed8 File:AnnotationMenu.png 6 619 2558 2017-11-11T15:53:36Z Fli091 93 Picture showing the location of the annotation menu in Cadence Virtuso wikitext text/x-wiki Picture showing the location of the annotation menu in Cadence Virtuso 5805315f98087abb0b7555448a17c28de097411c File:AnnotationSetupWindow.png 6 620 2559 2017-11-11T15:54:34Z Fli091 93 Picture showing the annotation setup in Cadence Virtuoso wikitext text/x-wiki Picture showing the annotation setup in Cadence Virtuoso e416492b96f6b1debb6b9d82d293cd0a9ca9d05f DCoperatingparameters 0 621 2560 2017-11-11T15:59:04Z Fli091 93 Created a guide to dc operating parameters in cadence virtuoso wikitext text/x-wiki = Show DC operating parameters = This guide will show you how to show DC operating parameters like gm, R_{out} V_{th} etc for all your transistors in a Cadence schematic. If you just want to save all parameters to a file have a look at this guide instead: [[Transistor operating point printer]] == Steps == # Create your circuit in a schematic # Set up a DC simulation, check the "save operating point"-box in the creating of the test # Go back to your schematic window and at the top-men click: # View - Annotations - DC Operating Points. This will give a default selection of parameters [[File:AnnotationMenu.png|thumbnail|right|The annotation menu]] # To chose which to view in your schematic go back to View - Annotations and at the bottom click "Setup.." # Make sure the library-drop-down is showing "tsmc13rf" (or your transistor library), choose pmos in "Cell" and leave instance to "*" if you want to change it for all transistors in your sheet. # Here you can see the list that is showing by default and three "free" cells at the rows Parameter:cdsPara(6), (7) and (8) # Double click in the column "Expression" for those rows and select the parameter you want to show (i.e region, rout, gm, gds) [[File:AnnotationSetupWindow.png|100px|thumbnail|right|The annotation setup window]] #* You might want to disable annotation of the first four rows here to hide some annotation noise # Click apply and repeat the same steps for the nmos cell [[File:PmosWithDCParameters.png|thumbnail|right|PMOS with parameters showing]] # Save this annotation set-up by clicking File - Save. Chose the default location to make it easy for yourself. (If you don't save you have to do this set-up every time you close Virtuoso) #* The next time you load your design just click View - Annotations - Setup.. and then File - Load - OK == Note == * Region 0 is cutoff * Region 1 is linear * Region 2 is saturation * Region 3 is subthreshold * Region 4 is breakdown * Type 0 is nMOS * Type 1 is pMOS [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] b3371a14debdb72335b6ed5c179f084eb05543d9 Cadence Virtuoso overview 0 38 2561 2542 2017-11-11T16:08:02Z Fli091 93 Added link to another helpful thing / DCoperatingparameters wikitext text/x-wiki = IC design flow using Cadence = We have access to several silicon technologies from different foundries * 130nm CMOS process from Taiwan Semiconductor Manufacturing: '''[[ TSMC 130nm process ]]''' * 130nm SiGe process from Innovations for High Performance Microelectronics: '''[[ IHP 130nm process ]]''' * 350nm CMOS process from Austria Mikro Systeme: '''[[ AMS 350nm process ]]''' = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[MikroserverSetup]] - setup for easy connection to the mikroservers and Cadence Virtuoso [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[DCoperatingparameters]] - Guide for showing transistor operating points in the schematic [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] e340e31e16ec218063d5a08f34e831dba6ef3927 MikroserverSetup 0 614 2562 2553 2017-11-14T12:10:58Z Fli091 93 Added alternative way to get your files from mikroserver wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no == SSH key == * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no == Connection aliases == For ease of use set up aliases for the connections in your terminal. Open .bashrc in a text editor (vim / nano) and type in this alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no' alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no' alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no' Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc == Automatic sourcing == Source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc == Commands to run virtuoso remotely == Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3.ift.uib.no/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/fredrik/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:~ * this will copy the file to your home folder on any UiB machine == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 175fdd8c4685449cbc30ae3fb6016b1b2bb70dbe 2563 2562 2017-11-14T12:11:21Z Fli091 93 Formatting wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no == SSH key == * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no == Connection aliases == For ease of use set up aliases for the connections in your terminal. Open .bashrc in a text editor (vim / nano) and type in this alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no' alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no' alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no' Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc == Automatic sourcing == Source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc == Commands to run virtuoso remotely == Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3.ift.uib.no/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/fredrik/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:~ * this will copy the file to your home folder on any UiB machine == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] c2fa9c275f0e4112d99c627b069ece91e802dc85 Particle Physics group 0 137 2564 2543 2017-11-20T20:46:09Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report (not the final version alas) from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] a1a676323b72991af68c249544e5ff81fa86fcab File:HEPP-2017-report-not-final.pdf 6 622 2565 2017-11-20T20:46:55Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Ranges.PNG 6 623 2566 2017-11-24T08:55:58Z Hpe090 98 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Root2.PNG 6 624 2567 2017-11-24T08:55:58Z Hpe090 98 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Root.PNG 6 625 2568 2017-11-24T08:55:59Z Hpe090 98 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Root file hierarchy.PNG 6 626 2569 2017-11-24T08:55:59Z Hpe090 98 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Geometry hiarerachy.png 6 627 2570 2017-11-24T08:55:59Z Hpe090 98 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 GATE tutorial 0 628 2571 2017-11-24T09:03:00Z Hpe090 98 Created page with "== Introduction and overview == This is a simple tutorial for GATE (Geant4) installation and usage, originally presented as a workshop for the pCT group in March 2017. # [ht..." wikitext text/x-wiki == Introduction and overview == This is a simple tutorial for GATE (Geant4) installation and usage, originally presented as a workshop for the pCT group in March 2017. # [http://geant4.in2p3.fr/spip.php?rubrique8 Geant4 and ROOT virtual machine] # [http://wiki.opengatecollaboration.org/index.php/Compilation_Instructions_V8.0 Gate installation] Agenda for the day is as follows: # An introduction to GATE macros, i.e. GATE input scripts # Setting up a simple simulation geometry in GATE using a proton bencil beam and a water phantom # Running short simulations # Examination of the GATE-output files == GATE == ''Simulations of Preclinical and Clinical Scans in Emission Tomography, Transmission Tomography and Radiation Therapy'' Geant4 is a C++ library, where an application / simulation is built by writing certain C++ classes (geometry, beam, scoring, output, physics), and compiling the binaries from where the simulations are run. Only certain modifications to the simulations can be made with the binaries, such as beam settings, certain physics settings as well as geometry objects pre-defined to be variable. GATE is an application written for Geant4. It was originally meant for PET and SPECT uses, however it is very flexible so many different kinds of detectors can be designed. To run GATE, only macro files written in the Geant4 scripting language (with some GATE specific commands) are needed to build the geometry, scoring, physics and beam. The output is also defined in the macro files, either to ASCII files or to ROOT files. In each simulation, the user has to: # define the scanner geometry # set up the physics processes # initialize the simulation # set up the detector model # define the source(s) # specify the data output format # start the acquisition === Introduction to GATE macros === Gate, just as GEANT4, is a program in which the user interface is based on scripts. To perform actions, the user must either enter commands in interactive mode, or build up macro files containing an ordered collection of commands. Each command performs a particular function, and may require one or more parameters. The Gate commands are organized following a tree structure, with respect to the function they represent. For example, all geometry-control commands start with geometry, and they will all be found under the ''/geometry/'' branch of the tree structure. When Gate is run, the '''Idle>''' prompt appears. At this stage the command interpreter is active; i.e. all the Gate commands entered will be interpreted and processed on-line. All functions in Gate can be accessed to using command lines. The geometry of the system, the description of the radioactive source(s), the physical interactions considered, etc., can be parameterized using command lines, which are translated to the Gate kernel by the command interpreter. In this way, the simulation is defined one step at a time, and the actual construction of the geometry and definition of the simulation can be seen on-line. If the effect is not as expected, the user can decide to re-adjust the desired parameter by re-entering the appropriate command on-line. Although entering commands step by step can be useful when the user is experimenting with the software or when he/she is not sure how to construct the geometry, there remains a need for storing the set of commands that led to a successful simulation. Macros are ASCII files (with '.mac' extension) in which each line contains a command or a comment. Commands are GEANT4 or Gate scripted commands; comments start with the character ' #'. Macros can be executed from within the command interpreter in Gate, or by passing it as a command-line parameter to Gate, or by calling it from another macro. A macro or set of macros must include all commands describing the different components of a simulation in the right order. Usually these components are visualization, definitions of volumes (geometry), systems, digitizer, physics, initialization, source, output and start. These steps are described in the next sections. A single simulation may be split into several macros, for instance one for the geometry, one for the physics, etc. Usually, there is a master macro which calls the more specific macros. Splitting macros allows the user to re-use one or more of these macros in several other simulations, and/or to organize the set of all commands. To execute a macro (mymacro.mac in this example) from the Linux prompt, just type : Gate mymacro.mac To execute a macro from inside the Gate environment, type after the "Idle>" prompt: Idle>/control/execute mymacro.mac And finally, to execute a macro from inside another macro, simply write in the master macro: /control/execute mymacro.mac === Setting up a simple simulation geometry in GATE using a pencil beam and a water phantom === ==== Visualization ==== First we may want to set up a visualization engine to see what's going on. This is optional, and runs in batch mode should not be visualized! Here we use the opengl visualizer OGLX, but different kinds of visualization engines are discussed in the [http://wiki.opengatecollaboration.org/index.php/Users_Guide_V7.2:Visualization GATE wiki] /vis/open OGLSX /vis/viewer/reset /vis/viewer/set/viewpointThetaPhi 60 60 /vis/viewer/zoom 1 /vis/viewer/set/style surface /vis/drawVolume /tracking/storeTrajectory 1 /vis/scene/endOfEventAction accumulate /vis/viewer/update Most of these commands are self explainatory. By using the storeTrajectory command, all particles are displayed together with the geometry. ==== Materials database ==== The default material assigned to a new volume is Air. The list of available materials is defined in the GateMaterials.db file. It's included in the Gate folder, and should be copied to the active directory. It is easy to add new materials to the file, just have a look at the file. /gate/geometry/setMaterialDatabase MyMaterialDatabase.db ==== Geometry ==== Apart from specialized geometries such as PET, SPECT, CT, the general geometry is called as ''scanner''. It must be placed within the ''world'' volume, and all parts of the detector (to be scored) be placed within the ''scanner'' volume. [[File:geometry_hiarerachy.png|400px]] To construct a simple water phantom geometry of 30x30x30 cm, use the following commands: /gate/world/geometry/setXLength 1000. cm /gate/world/geometry/setYLength 1000. cm /gate/world/geometry/setZLength 1000. cm So we've defined a world geometry of 1 m<sup>3</sup>. It must be larger than all its daughter volumes. Let's put the ''scanner'' volume inside the ''world'' volume. Since it's not already defined (the ''world'' volume was), we must insert a ''box'' object (with parameters XLength, YLength, ZLength as the side measurements of the box): /gate/world/daughters/name scanner /gate/world/daughters/insert box /gate/scanner/geometry/setXLength 100. cm /gate/scanner/geometry/setYLength 100. cm /gate/scanner/geometry/setZLength 100. cm /gate/scanner/placement/setTranslation 0 0 50. cm /gate/scanner/vis/forceWireframe Inside this scanner volume (the default material is Air): /gate/scanner/daughters/name phantom /gate/scanner/daughters/insert box /gate/phantom/geometry/setXLength 30. cm /gate/phantom/geometry/setYLength 30. cm /gate/phantom/geometry/setZLength 30. cm /gate/phantom/placement/setTranslation 0 0 -15. cm /gate/phantom/setMaterial Water /gate/phantom/vis/forceWireframe It is possible to repeat volumes. The simple method is to use a linear replicator: /gate/phantom/repeaters/insert linear /gate/phantom/linear/autoCenter false /gate/phantom/linear/setRepeatNumber 10 /gate/phantom/linear/setRepeatVector 0 0 35. cm The autoCenter command: The original volume is anchored (false), instead of the center-of-mass of all copies being centered at that position (true). ==== Sensitive Detectors ==== The scoring system in Geant4/GATE is based around ''Sensitive Detectors'' (SD). If a volume is a daughter volume (or grand-daughter, ...), it may be assigned as a SD. This process is super simple in GATE: /gate/phantom/attachCrystalSD If you want to define hierarchically repeated structures, such as layers or individually simulated pixels, they should be defined as a ''level'': /gate/scanner/level1/attach phantom /gate/scanner/level2/attach repeatedStructureWithinPhantom And now you can use the ROOT leaf ''level1ID'' and ''level2ID'' to identify the volume. ==== Physics ==== There are many physics lists to choose from in Geant4/GATE. For proton therapy and detector simulations, I most often use a combination of a low-energy-friendly hadronic list and the variable-steplength (for Bragg Peak accuracy) electromagnetic list. From the [http://geant4.cern.ch/support/physicsLists/referencePL/referencePL.shtml Geant4 reference physics webpage]: * QGSP: QGSP is the basic physics list applying the quark gluon string model for high energy interactions of protons, neutrons, pions, and Kaons and nuclei. The high energy interaction creates an exited nucleus, which is passed to the precompound model modeling the nuclear de-excitation. * QGSP_BIC: Like QGSP, but using Geant4 Binary cascade for primary protons and neutrons with energies below ~10GeV, thus replacing the use of the LEP model for protons and neutrons In comparison to the LEP model, Binary cascade better describes production of secondary particles produced in interactions of protons and neutrons with nuclei. * emstandard_opt3 designed for any applications required higher accuracy of electrons, hadrons and ion tracking without magnetic field. It is used in extended electromagnetic examples and in the QGSP_BIC_EMY reference Physics List. An overview over the different electromagnetic physics lists can be found [http://geant4.cern.ch/collaboration/working_groups/electromagnetic/physlist10.3.shtml here]. The physics list to use all of these is called ''QGSP_BIC_EMY''. It is loaded with the command /gate/physics/addPhysicsList QGSP_BIC_EMY In addition, in order to accurately represent the water in the water phantom, we define the current recommended value for the mean ionization potential for water, which is <math>75\ \mathrm{eV}</math>. This can be performed for all materials, and it will override Bragg's additivity rule. /gate/geometry/setIonisationPotential Water 75 eV ==== Initialization ==== After the geometry and physics has been set, initialize the run! /gate/run/initialize ==== Proton beam ==== /gate/source/addSource PBS PencilBeam /gate/source/PBS/setParticleType proton /gate/source/PBS/setEnergy 188.0 MeV /gate/source/PBS/setSigmaEnergy 1.0 MeV /gate/source/PBS/setPosition 0 0 -10. mm /gate/source/PBS/setSigmaX 2 mm /gate/source/PBS/setSigmaY 4 mm /gate/source/PBS/setSigmaTheta 3.3 mrad /gate/source/PBS/setSigmaPhi 3.8 mrad /gate/source/PBS/setEllipseXThetaEmittance 15 mm*mrad /gate/source/PBS/setEllipseXThetaRotationNorm negative /gate/source/PBS/setEllipseYPhiEmittance 20 mm*mrad /gate/source/PBS/setEllipseYPhiRotationNorm negative /gate/application/setTotalNumberOfPrimaries 5000 It is tricky to use this beam since all parameters need to match, so an '''alternative''' is to use a uniform General Particle Source: /gate/source/addSource uniformBeam gps /gate/source/uniformBeam/gps/particle proton /gate/source/uniformBeam/gps/ene/type Gauss /gate/source/uniformBeam/gps/ene/mono 188 MeV /gate/source/uniformBeam/gps/ene/sigma 1 MeV /gate/source/uniformBeam/gps/type Plane /gate/source/uniformBeam/gps/shape Square /gate/source/uniformBeam/gps/direction 0 0 1 /gate/source/uniformBeam/gps/halfx 0 mm /gate/source/uniformBeam/gps/halfy 0 mm /gate/source/uniformBeam/gps/centre 0 0 -1 cm /gate/application/setTotalNumberOfPrimaries 5000 ==== Output ==== For this tutorial, we will use the ROOT output. /gate/output/root/enable /gate/output/root/setFileName gate_simulation ==== Running the simulation ==== To finalize the macro file, start the randomization engine and run! /gate/random/setEngineName MersenneTwister /gate/random/setEngineSeed auto /gate/application/start === Running short simulations === To run a simulation, create a macro file with the lines as descibed above, and run it with $ Gate waterphantom.mac The terminal output describes the geometry, physics, etc. If you want the visualization to be persistent, use instead $ Gate ... [TEXT] Idle> /control/execute waterphantom.mac It is also possible to use aliases in the macro file. For example, to simplify the energy selection, substitute with the line /gate/source/PBS/setEnergy {energy} MeV and run the macro with $ Gate -a '[energy,175]' waterphantom.mac Multiple aliases can be stacked: $ Gate -a '[energy,175] [phantomsize,45]' waterphantom.mac if you have defined multiple alises in the macro file. It is sadly not possible to do calculations in the macro language, so you have to do that through bash (<code>newvalue=`echo "$oldvalue/2" | bc`</code>). === Examination of the GATE output files === The ROOT output file(s) from the simulation can be opened several ways: * By using the built-in <code>TBrowser</code> to look at scoring variable distributions * By using loading the ROOT Tree into a C++ program and looping over events (interactions) ==== Using the built-in <code>TBrowser</code> ==== The hierarchy for the files are shown in the image below: [[File:root_file_hierarchy.PNG|600px]] In Gate, the TTree is called ''Hits'', and the leaves are named after the different variables that are automatically scored: PDGEncoding - The Particle ID trackID - Track number following a mother particle parentID - The parent track's event ID. 0 if the current particle is a beam particle time - Time in simulation (for ToF in PET, etc.) edep - Deposited energy in this event / interaction stepLength - The length of the current step posX - Global X position of event posY - Global Y position of event posZ - Global Z position of event localPosX - Local (in mother volume) X position of event localPosY - Local (in mother volume) Y position of event localPosZ - Local (in mother volume) Z position of event baseID - ID of mother volume ''scanner'', == 0 if only one ''scanner'' defined level1ID - ID of 1st level of volume hierarchy level2ID - ID of 2nd level of volume hierarchy level3ID - ID of 3rd level of volume hierarchy level4ID - ID of 4th level of volume hierarchy sourcePosX - Global X position of source particle sourcePosY - Global Y position of source particle sourcePosZ - Global X position of source particle eventID - History number (important!!) volumeID - ID of current volume (useful to isolate particles in a specific part of a fully scored volume) processName - A string containing the name of the interaction type: - hIoni: Ionization by hadron - Transportation: No special interactions (usually from step limiter) - eIoni: Ionization by electron - ProtonInelastic: Inelastic nuclear interaction of proton - compt: Compton scattering - ionIoni: Ionization by ion - msc: Multiple Coulomb Scattering process - hadElastic: Elastic hadron / proton scattering An example of the distribution of eventID (in histogram form, this is the number of interactions per particle (if bin size = 1)) $ root ROOT [0] new TBrowser [[File:root.PNG|600px]] Or for the Z distribution (see the Bragg Peak) [[File:root2.PNG|600px]] ==== Opening the files in C++ ==== It is quite simple to open the generated ROOT files in a C++ program. In <code>openROOTFile.C</code>: #include <TTree.h> #include <TFile.h> using namespace std; void Run() { TFile *f = new TFile("gate_simulation.root"); TTree *tree = (TTree*) f->Get("Hits"); // The TTree in the GATE file is called ''Hits'' // Declare the variables (leafs) to be readout Float_t x,y,z,edep; Int_t eventID, parentID; // Make a connection between the declared variables and the leafs tree->SetBranchAddress("posX", &x); tree->SetBranchAddress("posY", &y); tree->SetBranchAddress("posZ", &z); tree->SetBranchAddress("edep", &edep); tree->SetBranchAddress("eventID", &eventID); tree->SetBranchAddress("parentID", &parentID); // Loop over all the entries in the tree for (Int_t i=0, i < tree->GetEntries(); ++i) { tree->GetEntry(i); if (eventID > 2) break; // To limit the output! if (parentID != 0) continue; // Only show results from primary particles printf("Primary particle with event ID %d has an interaction with %.2f MeV energy loss at (x,y,z) = (%.2f, %.2f, %.2f).\n", eventID, edep, x, y, z); } delete f; } Then you can run the program with $ root ROOT [0] .L openROOTFile.C+ // The + tells ROOT to compile the code ROOT [1] Run(); Please note that it is also possible to make a complete class to read out the root files using ROOT's <code>MakeClass</code> function. See [http://wiki.opengatecollaboration.org/index.php/Users_Guide_V7.2:Data_output#How_to_analyze_the_Root_output "How to analyze the ROOT output"]. ==== Test case: Finding the range and straggling of a proton beam ==== #include <TTree.h> #include <TH1F.h> #include <TFile.h> #include <TF1.h> using namespace std; void Run() { TFile * f = new TFile("gate_simulation.root"); TTree * tree = (TTree*) f->Get("Hits"); // The TTree in the GATE file is called ''Hits'' TH1F * rangeHistogram = new TH1F("rangeHistogram", "Stopping position for protons"; 800, 0, 400); // Histogram 1D with Float values Float_t z; Int_t eventID, parentID; Int_t lastEventID = -1; Float_t lastZ = -1; tree->SetBranchAddress("posZ", &z); tree->SetBranchAddress("eventID", &eventID); tree->SetBranchAddress("parentID", &parentID); for (Int_t i=0, i < tree->GetEntries(); ++i) { tree->GetEntry(i); if (parentID != 0) continue; // Check if this is the first event of a primary particle if (eventID != lastEventID && lastEventID >= 0) { rangeHistogram->Fill(lastZ); } // Store the current variables lastZ = z; lastEventID = eventID; } rangeHistogram->Draw(); // Make a Gaussian fit to the range TF1 * fit = new TF1("fit", "gaus"); rangeHistogram->Fit("fit", "", "", 150, 250); // Most probable values for fit is in this range, ROOT is quite sensitive to Gaussians occupying only a small part of the histogram, so give narrow fit range printf("The range of the proton beam is %.3f +- %.3f mm.\n", fit->GetParameter(1), fit->GetParameter(2)); } This time, the program will yield the following output (from a 250 MeV beam): The range of the proton beam is 378.225 mm +- 3.791 mm With the following histogram (I've added some color and a SetOptFit to the legend) [[File:ranges.PNG|600px]] 6be878d888c0b906a514a5fc5d535fb334133fd1 2573 2571 2017-11-28T10:33:36Z Fli091 93 Added [[Category:Mikroelektronikk]] to this page so is listed wikitext text/x-wiki == Introduction and overview == This is a simple tutorial for GATE (Geant4) installation and usage, originally presented as a workshop for the pCT group in March 2017. # [http://geant4.in2p3.fr/spip.php?rubrique8 Geant4 and ROOT virtual machine] # [http://wiki.opengatecollaboration.org/index.php/Compilation_Instructions_V8.0 Gate installation] Agenda for the day is as follows: # An introduction to GATE macros, i.e. GATE input scripts # Setting up a simple simulation geometry in GATE using a proton bencil beam and a water phantom # Running short simulations # Examination of the GATE-output files == GATE == ''Simulations of Preclinical and Clinical Scans in Emission Tomography, Transmission Tomography and Radiation Therapy'' Geant4 is a C++ library, where an application / simulation is built by writing certain C++ classes (geometry, beam, scoring, output, physics), and compiling the binaries from where the simulations are run. Only certain modifications to the simulations can be made with the binaries, such as beam settings, certain physics settings as well as geometry objects pre-defined to be variable. GATE is an application written for Geant4. It was originally meant for PET and SPECT uses, however it is very flexible so many different kinds of detectors can be designed. To run GATE, only macro files written in the Geant4 scripting language (with some GATE specific commands) are needed to build the geometry, scoring, physics and beam. The output is also defined in the macro files, either to ASCII files or to ROOT files. In each simulation, the user has to: # define the scanner geometry # set up the physics processes # initialize the simulation # set up the detector model # define the source(s) # specify the data output format # start the acquisition === Introduction to GATE macros === Gate, just as GEANT4, is a program in which the user interface is based on scripts. To perform actions, the user must either enter commands in interactive mode, or build up macro files containing an ordered collection of commands. Each command performs a particular function, and may require one or more parameters. The Gate commands are organized following a tree structure, with respect to the function they represent. For example, all geometry-control commands start with geometry, and they will all be found under the ''/geometry/'' branch of the tree structure. When Gate is run, the '''Idle>''' prompt appears. At this stage the command interpreter is active; i.e. all the Gate commands entered will be interpreted and processed on-line. All functions in Gate can be accessed to using command lines. The geometry of the system, the description of the radioactive source(s), the physical interactions considered, etc., can be parameterized using command lines, which are translated to the Gate kernel by the command interpreter. In this way, the simulation is defined one step at a time, and the actual construction of the geometry and definition of the simulation can be seen on-line. If the effect is not as expected, the user can decide to re-adjust the desired parameter by re-entering the appropriate command on-line. Although entering commands step by step can be useful when the user is experimenting with the software or when he/she is not sure how to construct the geometry, there remains a need for storing the set of commands that led to a successful simulation. Macros are ASCII files (with '.mac' extension) in which each line contains a command or a comment. Commands are GEANT4 or Gate scripted commands; comments start with the character ' #'. Macros can be executed from within the command interpreter in Gate, or by passing it as a command-line parameter to Gate, or by calling it from another macro. A macro or set of macros must include all commands describing the different components of a simulation in the right order. Usually these components are visualization, definitions of volumes (geometry), systems, digitizer, physics, initialization, source, output and start. These steps are described in the next sections. A single simulation may be split into several macros, for instance one for the geometry, one for the physics, etc. Usually, there is a master macro which calls the more specific macros. Splitting macros allows the user to re-use one or more of these macros in several other simulations, and/or to organize the set of all commands. To execute a macro (mymacro.mac in this example) from the Linux prompt, just type : Gate mymacro.mac To execute a macro from inside the Gate environment, type after the "Idle>" prompt: Idle>/control/execute mymacro.mac And finally, to execute a macro from inside another macro, simply write in the master macro: /control/execute mymacro.mac === Setting up a simple simulation geometry in GATE using a pencil beam and a water phantom === ==== Visualization ==== First we may want to set up a visualization engine to see what's going on. This is optional, and runs in batch mode should not be visualized! Here we use the opengl visualizer OGLX, but different kinds of visualization engines are discussed in the [http://wiki.opengatecollaboration.org/index.php/Users_Guide_V7.2:Visualization GATE wiki] /vis/open OGLSX /vis/viewer/reset /vis/viewer/set/viewpointThetaPhi 60 60 /vis/viewer/zoom 1 /vis/viewer/set/style surface /vis/drawVolume /tracking/storeTrajectory 1 /vis/scene/endOfEventAction accumulate /vis/viewer/update Most of these commands are self explainatory. By using the storeTrajectory command, all particles are displayed together with the geometry. ==== Materials database ==== The default material assigned to a new volume is Air. The list of available materials is defined in the GateMaterials.db file. It's included in the Gate folder, and should be copied to the active directory. It is easy to add new materials to the file, just have a look at the file. /gate/geometry/setMaterialDatabase MyMaterialDatabase.db ==== Geometry ==== Apart from specialized geometries such as PET, SPECT, CT, the general geometry is called as ''scanner''. It must be placed within the ''world'' volume, and all parts of the detector (to be scored) be placed within the ''scanner'' volume. [[File:geometry_hiarerachy.png|400px]] To construct a simple water phantom geometry of 30x30x30 cm, use the following commands: /gate/world/geometry/setXLength 1000. cm /gate/world/geometry/setYLength 1000. cm /gate/world/geometry/setZLength 1000. cm So we've defined a world geometry of 1 m<sup>3</sup>. It must be larger than all its daughter volumes. Let's put the ''scanner'' volume inside the ''world'' volume. Since it's not already defined (the ''world'' volume was), we must insert a ''box'' object (with parameters XLength, YLength, ZLength as the side measurements of the box): /gate/world/daughters/name scanner /gate/world/daughters/insert box /gate/scanner/geometry/setXLength 100. cm /gate/scanner/geometry/setYLength 100. cm /gate/scanner/geometry/setZLength 100. cm /gate/scanner/placement/setTranslation 0 0 50. cm /gate/scanner/vis/forceWireframe Inside this scanner volume (the default material is Air): /gate/scanner/daughters/name phantom /gate/scanner/daughters/insert box /gate/phantom/geometry/setXLength 30. cm /gate/phantom/geometry/setYLength 30. cm /gate/phantom/geometry/setZLength 30. cm /gate/phantom/placement/setTranslation 0 0 -15. cm /gate/phantom/setMaterial Water /gate/phantom/vis/forceWireframe It is possible to repeat volumes. The simple method is to use a linear replicator: /gate/phantom/repeaters/insert linear /gate/phantom/linear/autoCenter false /gate/phantom/linear/setRepeatNumber 10 /gate/phantom/linear/setRepeatVector 0 0 35. cm The autoCenter command: The original volume is anchored (false), instead of the center-of-mass of all copies being centered at that position (true). ==== Sensitive Detectors ==== The scoring system in Geant4/GATE is based around ''Sensitive Detectors'' (SD). If a volume is a daughter volume (or grand-daughter, ...), it may be assigned as a SD. This process is super simple in GATE: /gate/phantom/attachCrystalSD If you want to define hierarchically repeated structures, such as layers or individually simulated pixels, they should be defined as a ''level'': /gate/scanner/level1/attach phantom /gate/scanner/level2/attach repeatedStructureWithinPhantom And now you can use the ROOT leaf ''level1ID'' and ''level2ID'' to identify the volume. ==== Physics ==== There are many physics lists to choose from in Geant4/GATE. For proton therapy and detector simulations, I most often use a combination of a low-energy-friendly hadronic list and the variable-steplength (for Bragg Peak accuracy) electromagnetic list. From the [http://geant4.cern.ch/support/physicsLists/referencePL/referencePL.shtml Geant4 reference physics webpage]: * QGSP: QGSP is the basic physics list applying the quark gluon string model for high energy interactions of protons, neutrons, pions, and Kaons and nuclei. The high energy interaction creates an exited nucleus, which is passed to the precompound model modeling the nuclear de-excitation. * QGSP_BIC: Like QGSP, but using Geant4 Binary cascade for primary protons and neutrons with energies below ~10GeV, thus replacing the use of the LEP model for protons and neutrons In comparison to the LEP model, Binary cascade better describes production of secondary particles produced in interactions of protons and neutrons with nuclei. * emstandard_opt3 designed for any applications required higher accuracy of electrons, hadrons and ion tracking without magnetic field. It is used in extended electromagnetic examples and in the QGSP_BIC_EMY reference Physics List. An overview over the different electromagnetic physics lists can be found [http://geant4.cern.ch/collaboration/working_groups/electromagnetic/physlist10.3.shtml here]. The physics list to use all of these is called ''QGSP_BIC_EMY''. It is loaded with the command /gate/physics/addPhysicsList QGSP_BIC_EMY In addition, in order to accurately represent the water in the water phantom, we define the current recommended value for the mean ionization potential for water, which is <math>75\ \mathrm{eV}</math>. This can be performed for all materials, and it will override Bragg's additivity rule. /gate/geometry/setIonisationPotential Water 75 eV ==== Initialization ==== After the geometry and physics has been set, initialize the run! /gate/run/initialize ==== Proton beam ==== /gate/source/addSource PBS PencilBeam /gate/source/PBS/setParticleType proton /gate/source/PBS/setEnergy 188.0 MeV /gate/source/PBS/setSigmaEnergy 1.0 MeV /gate/source/PBS/setPosition 0 0 -10. mm /gate/source/PBS/setSigmaX 2 mm /gate/source/PBS/setSigmaY 4 mm /gate/source/PBS/setSigmaTheta 3.3 mrad /gate/source/PBS/setSigmaPhi 3.8 mrad /gate/source/PBS/setEllipseXThetaEmittance 15 mm*mrad /gate/source/PBS/setEllipseXThetaRotationNorm negative /gate/source/PBS/setEllipseYPhiEmittance 20 mm*mrad /gate/source/PBS/setEllipseYPhiRotationNorm negative /gate/application/setTotalNumberOfPrimaries 5000 It is tricky to use this beam since all parameters need to match, so an '''alternative''' is to use a uniform General Particle Source: /gate/source/addSource uniformBeam gps /gate/source/uniformBeam/gps/particle proton /gate/source/uniformBeam/gps/ene/type Gauss /gate/source/uniformBeam/gps/ene/mono 188 MeV /gate/source/uniformBeam/gps/ene/sigma 1 MeV /gate/source/uniformBeam/gps/type Plane /gate/source/uniformBeam/gps/shape Square /gate/source/uniformBeam/gps/direction 0 0 1 /gate/source/uniformBeam/gps/halfx 0 mm /gate/source/uniformBeam/gps/halfy 0 mm /gate/source/uniformBeam/gps/centre 0 0 -1 cm /gate/application/setTotalNumberOfPrimaries 5000 ==== Output ==== For this tutorial, we will use the ROOT output. /gate/output/root/enable /gate/output/root/setFileName gate_simulation ==== Running the simulation ==== To finalize the macro file, start the randomization engine and run! /gate/random/setEngineName MersenneTwister /gate/random/setEngineSeed auto /gate/application/start === Running short simulations === To run a simulation, create a macro file with the lines as descibed above, and run it with $ Gate waterphantom.mac The terminal output describes the geometry, physics, etc. If you want the visualization to be persistent, use instead $ Gate ... [TEXT] Idle> /control/execute waterphantom.mac It is also possible to use aliases in the macro file. For example, to simplify the energy selection, substitute with the line /gate/source/PBS/setEnergy {energy} MeV and run the macro with $ Gate -a '[energy,175]' waterphantom.mac Multiple aliases can be stacked: $ Gate -a '[energy,175] [phantomsize,45]' waterphantom.mac if you have defined multiple alises in the macro file. It is sadly not possible to do calculations in the macro language, so you have to do that through bash (<code>newvalue=`echo "$oldvalue/2" | bc`</code>). === Examination of the GATE output files === The ROOT output file(s) from the simulation can be opened several ways: * By using the built-in <code>TBrowser</code> to look at scoring variable distributions * By using loading the ROOT Tree into a C++ program and looping over events (interactions) ==== Using the built-in <code>TBrowser</code> ==== The hierarchy for the files are shown in the image below: [[File:root_file_hierarchy.PNG|600px]] In Gate, the TTree is called ''Hits'', and the leaves are named after the different variables that are automatically scored: PDGEncoding - The Particle ID trackID - Track number following a mother particle parentID - The parent track's event ID. 0 if the current particle is a beam particle time - Time in simulation (for ToF in PET, etc.) edep - Deposited energy in this event / interaction stepLength - The length of the current step posX - Global X position of event posY - Global Y position of event posZ - Global Z position of event localPosX - Local (in mother volume) X position of event localPosY - Local (in mother volume) Y position of event localPosZ - Local (in mother volume) Z position of event baseID - ID of mother volume ''scanner'', == 0 if only one ''scanner'' defined level1ID - ID of 1st level of volume hierarchy level2ID - ID of 2nd level of volume hierarchy level3ID - ID of 3rd level of volume hierarchy level4ID - ID of 4th level of volume hierarchy sourcePosX - Global X position of source particle sourcePosY - Global Y position of source particle sourcePosZ - Global X position of source particle eventID - History number (important!!) volumeID - ID of current volume (useful to isolate particles in a specific part of a fully scored volume) processName - A string containing the name of the interaction type: - hIoni: Ionization by hadron - Transportation: No special interactions (usually from step limiter) - eIoni: Ionization by electron - ProtonInelastic: Inelastic nuclear interaction of proton - compt: Compton scattering - ionIoni: Ionization by ion - msc: Multiple Coulomb Scattering process - hadElastic: Elastic hadron / proton scattering An example of the distribution of eventID (in histogram form, this is the number of interactions per particle (if bin size = 1)) $ root ROOT [0] new TBrowser [[File:root.PNG|600px]] Or for the Z distribution (see the Bragg Peak) [[File:root2.PNG|600px]] ==== Opening the files in C++ ==== It is quite simple to open the generated ROOT files in a C++ program. In <code>openROOTFile.C</code>: #include <TTree.h> #include <TFile.h> using namespace std; void Run() { TFile *f = new TFile("gate_simulation.root"); TTree *tree = (TTree*) f->Get("Hits"); // The TTree in the GATE file is called ''Hits'' // Declare the variables (leafs) to be readout Float_t x,y,z,edep; Int_t eventID, parentID; // Make a connection between the declared variables and the leafs tree->SetBranchAddress("posX", &x); tree->SetBranchAddress("posY", &y); tree->SetBranchAddress("posZ", &z); tree->SetBranchAddress("edep", &edep); tree->SetBranchAddress("eventID", &eventID); tree->SetBranchAddress("parentID", &parentID); // Loop over all the entries in the tree for (Int_t i=0, i < tree->GetEntries(); ++i) { tree->GetEntry(i); if (eventID > 2) break; // To limit the output! if (parentID != 0) continue; // Only show results from primary particles printf("Primary particle with event ID %d has an interaction with %.2f MeV energy loss at (x,y,z) = (%.2f, %.2f, %.2f).\n", eventID, edep, x, y, z); } delete f; } Then you can run the program with $ root ROOT [0] .L openROOTFile.C+ // The + tells ROOT to compile the code ROOT [1] Run(); Please note that it is also possible to make a complete class to read out the root files using ROOT's <code>MakeClass</code> function. See [http://wiki.opengatecollaboration.org/index.php/Users_Guide_V7.2:Data_output#How_to_analyze_the_Root_output "How to analyze the ROOT output"]. ==== Test case: Finding the range and straggling of a proton beam ==== #include <TTree.h> #include <TH1F.h> #include <TFile.h> #include <TF1.h> using namespace std; void Run() { TFile * f = new TFile("gate_simulation.root"); TTree * tree = (TTree*) f->Get("Hits"); // The TTree in the GATE file is called ''Hits'' TH1F * rangeHistogram = new TH1F("rangeHistogram", "Stopping position for protons"; 800, 0, 400); // Histogram 1D with Float values Float_t z; Int_t eventID, parentID; Int_t lastEventID = -1; Float_t lastZ = -1; tree->SetBranchAddress("posZ", &z); tree->SetBranchAddress("eventID", &eventID); tree->SetBranchAddress("parentID", &parentID); for (Int_t i=0, i < tree->GetEntries(); ++i) { tree->GetEntry(i); if (parentID != 0) continue; // Check if this is the first event of a primary particle if (eventID != lastEventID && lastEventID >= 0) { rangeHistogram->Fill(lastZ); } // Store the current variables lastZ = z; lastEventID = eventID; } rangeHistogram->Draw(); // Make a Gaussian fit to the range TF1 * fit = new TF1("fit", "gaus"); rangeHistogram->Fit("fit", "", "", 150, 250); // Most probable values for fit is in this range, ROOT is quite sensitive to Gaussians occupying only a small part of the histogram, so give narrow fit range printf("The range of the proton beam is %.3f +- %.3f mm.\n", fit->GetParameter(1), fit->GetParameter(2)); } This time, the program will yield the following output (from a 250 MeV beam): The range of the proton beam is 378.225 mm +- 3.791 mm With the following histogram (I've added some color and a SetOptFit to the legend) [[File:ranges.PNG|600px]] [[Category:Mikroelektronikk]] 15b0dea896673f5af35d44ae70fcbed7e58c20a3 User:Fli091 2 608 2572 2508 2017-11-28T10:32:21Z Fli091 93 wikitext text/x-wiki [mailto:fli091@uib.no mailto:fli091@uib.no] == Diverse lenker == * [https://www.eda.ncsu.edu/wiki/FreePDK The FreePDKTM process design kit is an open-source, Open-Access-based PDK for the 45nm technology] * [http://venividiwiki.ee.virginia.edu/mediawiki/index.php/ToolsCadenceTutorialsBasicSimulationOceanFreePDK Simulere med Cadence via OCEAN skript] * [https://drive.google.com/file/d/0B8aUrqN1GG-DMl9Mc29rQnRpaVE/edit En presentasjon av hvordan lage OCEANskript] b196b4f4761be841d186a35746877c1eaa502161 User:Yag005 2 629 2574 2017-11-28T13:15:05Z Yag005 96 Created page with "Master student in microelectronics group. Contact email: yag005@student.uib.no" wikitext text/x-wiki Master student in microelectronics group. Contact email: yag005@student.uib.no 7a8aa39b24ce34569d5fc3e41f503babc1515392 Microelectronics group 0 25 2575 2394 2017-11-28T13:17:39Z Yag005 96 /* Annet */ wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[FreeRTOS]] Free Real Time Operating System == Andre fagressurser og laboratorieveiledninger== * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] b26fc3069fbc3351b99224da58db1a3f681ae22f FreeRTOS 0 630 2576 2017-11-28T13:19:34Z Yag005 96 Created page with "[[FSBL]] First Stage Bootloader" wikitext text/x-wiki [[FSBL]] First Stage Bootloader 8c1ebba3b6832641c05ed1ab7a2630f60d1667ee 2577 2576 2017-11-28T13:21:20Z Yag005 96 wikitext text/x-wiki [[FreeRTOS FSBL]] First Stage Bootloader b658e7bc67f2798bcf6f244a2459322c962208ac 2578 2577 2017-11-28T13:23:01Z Yag005 96 wikitext text/x-wiki [[FreeRTOS FSBL]] - First Stage Bootloader: Run FreeRTOS by booting OS and application project from SD-card 4c2d49071621b7cd8258fbadf821b20e083fe47b FreeRTOS FSBL 0 631 2579 2017-11-28T13:33:45Z Yag005 96 Created page with "Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-t..." wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. ===== Exporting hardware bitstream ===== cc06828c6265dcc0f41425c1fee3d9c954b78a71 2580 2579 2017-11-28T13:42:01Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. ===== Exporting hardware bitstream ===== After the bitstream was generated in the previous tutorial, it is now possible to export it. ''Goto: File -> Export -> Export Hardware..'' Click to include bitstream, and press "OK". Next, goto: ''File -> Launch SDK''. The following window will appear: [[File:Launch SDK.png|thumbnail]] Press "OK". 742c884c756c012f60e8219e19a20134b5000df1 2582 2580 2017-11-28T13:44:20Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. ===== Exporting hardware bitstream ===== After the bitstream was generated in the previous tutorial, it is now possible to export it. ''Goto: File -> Export -> Export Hardware..'' Click to include bitstream, and press "OK". Next, goto: ''File -> Launch SDK''. The following window will appear: [[File:Launch SDK.png|thumbnail|center]] Press "OK". 5eb37c1405a09d118b3af2f94d1d9713f3059d29 2584 2582 2017-11-28T13:46:30Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. ===== Exporting hardware bitstream ===== After the bitstream was generated in the previous tutorial, it is now possible to export it. ''Goto: File -> Export -> Export Hardware..'' Make sure to include bitstream, and press "OK". [[File:export_hardware.png|400px|center]] Next, goto: ''File -> Launch SDK''. The following window will appear: [[File:Launch SDK.png|thumbnail|center]] Press "OK". 5ec66e8b5a97750e8926cb4bad8f02a5a150ecd0 2585 2584 2017-11-28T13:46:46Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. ===== Exporting hardware bitstream ===== After the bitstream was generated in the previous tutorial, it is now possible to export it. ''Goto: File -> Export -> Export Hardware..'' Make sure to include bitstream, and press "OK". [[File:export_hardware.png|thumbnail|center]] Next, goto: ''File -> Launch SDK''. The following window will appear: [[File:Launch SDK.png|thumbnail|center]] Press "OK". 474273cdda8be2f23d2d50fdb324eae02a97669c 2586 2585 2017-11-28T13:50:04Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. ===== Exporting hardware bitstream ===== After the bitstream was generated in the previous tutorial, it is now possible to export it. ''Goto: File -> Export -> Export Hardware..'' Make sure to include bitstream, and press "OK". [[File:export_hardware.png|thumbnail|center]] Next, goto: ''File -> Launch SDK''. The following window will appear: [[File:Launch SDK.png|thumbnail|center]] Press "OK" and wait for Xilinx SDK to start up and finish loading. ... Work in progress ... e66931d76f44f81bfd2a57ced6ed41aaf43b8ed7 File:Launch SDK.png 6 632 2581 2017-11-28T13:42:51Z Yag005 96 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Export hardware.png 6 633 2583 2017-11-28T13:46:08Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:New project name.png 6 634 2587 2017-11-28T13:54:29Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2588 2587 2017-11-28T13:57:04Z Yag005 96 Yag005 uploaded a new version of [[File:New project name.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2590 2588 2017-11-28T14:00:03Z Yag005 96 Yag005 uploaded a new version of [[File:New project name.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2592 2590 2017-11-28T14:01:49Z Yag005 96 Yag005 uploaded a new version of [[File:New project name.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Creating example project with AXI4 Lite peripheral in Xilinx Vivado 0 635 2589 2017-11-28T13:57:24Z Yag005 96 Created page with "Tested on Xilinx Vivado 2017.3. Start Vivado Goto: ''File -> New Project -> Next''. For this project we will name it axi4_lite_tutorial_project. File:new_project_name.png|..." wikitext text/x-wiki Tested on Xilinx Vivado 2017.3. Start Vivado Goto: ''File -> New Project -> Next''. For this project we will name it axi4_lite_tutorial_project. [[File:new_project_name.png|thumbnail|center]] 99c5e96dff99bf190ed4a638907deadfa84a8008 2591 2589 2017-11-28T14:00:31Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3. Start Vivado Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials.[[:File:new_project_name.png|thumbnail|center]] 2305b135f19ba78e16ace2ebfc7f87e8c64cc6fc 2593 2591 2017-11-28T14:02:04Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3. Start Vivado Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. [[File:New_project_name.png|thumbnail|center]] 7f4d1d1f46641d6826ff32c56e40c4a632d1bb63 2594 2593 2017-11-28T14:10:47Z Yag005 96 wikitext text/x-wiki [[File:Example.jpg|thumbnail]]Tested on Xilinx Vivado 2017.3. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both Target and Simulator Language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. c71cf0fabbe613d3df7c5159af00f43293502820 2596 2594 2017-11-28T14:28:22Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. 9a50bf85855b876f4861c0391fdef7ae5cc14da2 2599 2596 2017-11-28T14:36:55Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created, and IP-blocks can be integrated: Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. The window should now look like this: [[File:first_block.png|thumbnail|center]] e915c6909cf0ea49ee1203253b1bf70493891c5b 2600 2599 2017-11-28T14:37:30Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created, and IP-blocks can be integrated: Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. The window should now look like this: [[File:first_block.png|thumbnail|left]] 8085a66ac393c760fadb6276b52148ca313a93cf 2601 2600 2017-11-28T14:38:20Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created, and IP-blocks can be integrated: Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. The window should now look like this: [[File:first_block.png|thumbnail|left]] a2e97e69675caec4317fbedcf21d8ceee3ddb633 2602 2601 2017-11-28T14:38:55Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created, and IP-blocks can be integrated: Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|left]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. The window should now look like this: [[File:first_block.png|thumbnail|left]] c2ea27f72312a97544fb389bac86303d45151441 2604 2602 2017-11-28T14:43:18Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|left]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|left]] 0b5581dafc676f9a961d8afee006b14f570249b1 2605 2604 2017-11-28T14:43:37Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|left]] 2a9151cf1b7285c3cae612d6ada7420a6c76201a 2606 2605 2017-11-28T15:02:35Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|left]] Goto: ''Tools -> Create and Package New IP''. Choose Create a New AXI3 peripheral, and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. 12b6fc0e1312f140216201c04362f22380742047 2608 2606 2017-12-04T13:44:30Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|left]] Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0". eaa68680d159856cb3113edee43e0d432ae3b27e File:New project default part.png 6 636 2595 2017-11-28T14:25:40Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Create block design.png 6 637 2597 2017-11-28T14:33:34Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:First block.png 6 638 2598 2017-11-28T14:36:35Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2603 2598 2017-11-28T14:43:10Z Yag005 96 Yag005 uploaded a new version of [[File:First block.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Add interfaces axi4lite.png 6 639 2607 2017-12-04T13:44:03Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Diagram axi4lite periph added.png 6 640 2609 2017-12-04T13:47:14Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2610 2609 2017-12-04T14:24:22Z Yag005 96 Yag005 uploaded a new version of [[File:Diagram axi4lite periph added.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Led port success.png 6 641 2611 2017-12-04T16:48:04Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2619 2611 2017-12-04T16:52:36Z Yag005 96 Yag005 uploaded a new version of [[File:Led port success.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Led ip 3.png 6 642 2612 2017-12-04T16:48:04Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Led ip 2.png 6 643 2613 2017-12-04T16:48:05Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Led ip 1.png 6 644 2614 2017-12-04T16:48:05Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:S00 2.png 6 645 2615 2017-12-04T16:48:05Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:S00 1.png 6 646 2616 2017-12-04T16:49:12Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Creating example project with AXI4 Lite peripheral in Xilinx Vivado 0 635 2617 2608 2017-12-04T16:49:19Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|center]] Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters. [[File:diagram_axi4lite_periph_added.png|center]]<br /> Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update. ''Right click axi4_lite_led_IP_0 block --> Edit in IP Packager''. [[File:led_ip_1.png|400px]] [[File:led_ip_2.png|400px]] [[File:led_ip_3.png|400px]] [[File:S00_1.png|400px]] [[File:S00_2.png|400px]] [[File:led_port_success.png|400px]] Find the following files under Sources: ''Design Sources --> design_1_wrapper --> design_1_i: design_1 --> design_1 --> axi4_lite_led_IP_0 : design_1_axi4_lite_led_IP_0_1 --> design_1_axi4_lite_led_IP_0_1'', or if you want to do the editing in your favorite editor, find the files in ''axi4_lite_tutorial_project/axi4_lite_tutorial_project.srcs/sources_1/bd/design_1/ipshared/4b4e/hdl''<br /> axi4_lite_led_IP_v1_0_S00_AXI.vhd <br /> axi4_lite_led_IP_v1_0.vhd<br /> <br /> We will start by editing axi4_lite_led_IP_v1_0.vhd using the Visual Studio Code editor:<br /> <br /> Then editing axi4_lite_led_IP_v1_0_S00_AXI.vhd:<br /> Choose "Ports and interfaces" in the Package IP tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project. Click on "IP Status" tab, and choose "Upgrade Selected". a97e3da646ec56910b34fddb34a01644b78516e4 2618 2617 2017-12-04T16:52:01Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|center]] Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters. [[File:diagram_axi4lite_periph_added.png|center]]<br /> Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update. ''Right click axi4_lite_led_IP_0 block --> Edit in IP Packager''. Then do the following edits to axi4_lite_led_IP_v1_0_S00_AXI.vhd and axi4_lite_led_IP_v1_0.vhd<br /> <br /> [[File:led_ip_1.png|400px]] [[File:led_ip_2.png|400px]] [[File:led_ip_3.png|400px]] [[File:S00_1.png|400px]] [[File:S00_2.png|400px]] [[File:led_port_success.png|400px]] Save both files, and go into the "Ports and interfaces" tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project. Click on "IP Status" tab, and choose "Upgrade Selected" if you are not automatically prompted. e31a9483e7b559d83b2c7b575a4eb8233944eddd 2620 2618 2017-12-04T17:01:45Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|center]] Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters. [[File:diagram_axi4lite_periph_added.png|center]]<br /> Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update. ''Right click axi4_lite_led_IP_0 block --> Edit in IP Packager''. Then do the following edits to axi4_lite_led_IP_v1_0_S00_AXI.vhd and axi4_lite_led_IP_v1_0.vhd<br /> <br /> [[File:led_ip_1.png|400px]] [[File:led_ip_2.png|400px]] [[File:led_ip_3.png|400px]] [[File:S00_1.png|400px]] [[File:S00_2.png|400px]] Save both files, and go into the "Ports and interfaces" tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project. Click on "IP Status" tab, and choose "Upgrade Selected" if you are not automatically prompted. Go back to the Block design diagram, and right-click on the newly created port named "led_port[3:0]" on our custom IP and choose "make external". Save. Open the constraints file ZYBO_Master.xdc located under Constraints in the sources tab design tree. To avoid tons of warnings, comment out everything except from the 4 lines under "##LEDs". Rewrite them to the following:<br /><br /> set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led_port[3] }]; #IO_L23P_T3_35 Sch=LED0<br /> set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led_port[2] }]; #IO_L23N_T3_35 Sch=LED1<br /> set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led_port[1] }]; #IO_0_35=Sch=LED2<br /> set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { led_port[0] }]; #IO_L3N_T0_DQS_AD1N_35 Sch=LED3<br /> 9369b43799b5a3e7e8027037100a15786a90f369 2621 2620 2017-12-04T17:02:26Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|center]] Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters. [[File:diagram_axi4lite_periph_added.png|center]]<br /> Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update. ''Right click axi4_lite_led_IP_0 block --> Edit in IP Packager''. Then do the following edits to axi4_lite_led_IP_v1_0_S00_AXI.vhd and axi4_lite_led_IP_v1_0.vhd<br /> <br /> [[File:led_ip_1.png|400px]] [[File:led_ip_2.png|400px]] [[File:led_ip_3.png|400px]] [[File:S00_1.png|400px]] [[File:S00_2.png|400px]] Save both files, and go into the "Ports and interfaces" tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project. Click on "IP Status" tab, and choose "Upgrade Selected" if you are not automatically prompted. Go back to the Block design diagram, and right-click on the newly created port named "led_port[3:0]" on our custom IP and choose "make external". Save. Open the constraints file ZYBO_Master.xdc located under Constraints in the sources tab design tree. To avoid tons of warnings, comment out everything except from the 4 lines under "##LEDs". Rewrite them to the following:<br /><br /> set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led_port[3] }]; <br /> set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led_port[2] }]; <br /> set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led_port[1] }]; <br /> set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { led_port[0] }]; <br /> 4c1e71c9fc5411f38e07496f6dedfcac51f7238b 2622 2621 2017-12-04T18:11:22Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|center]] Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters. [[File:diagram_axi4lite_periph_added.png|center]]<br /> Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update. ''Right click axi4_lite_led_IP_0 block --> Edit in IP Packager''. Then do the following edits to axi4_lite_led_IP_v1_0_S00_AXI.vhd and axi4_lite_led_IP_v1_0.vhd<br /> <br /> [[File:led_ip_1.png|400px]] [[File:led_ip_2.png|400px]] [[File:led_ip_3.png|400px]] [[File:S00_1.png|400px]] [[File:S00_2.png|400px]] Save both files, and go into the "Ports and interfaces" tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project. Click on "IP Status" tab, and choose "Upgrade Selected" if you are not automatically prompted. Go back to the Block design diagram, and right-click on the newly created port named "led_port[3:0]" on our custom IP and choose "make external". Save. Open the constraints file ZYBO_Master.xdc located under Constraints in the sources tab design tree. To avoid tons of warnings, comment out everything except from the 4 lines under "##LEDs". Rewrite them to the following:<br /><br /> set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led_port[3] }]; <br /> set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led_port[2] }]; <br /> set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led_port[1] }]; <br /> set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { led_port[0] }]; <br /> Save the file, and click "Generate Bitstream". Accept the launch of synthesis and implementation. 3cc946e94e134e11688a6eb7a96c5fd020c191b5 2627 2622 2017-12-06T13:23:12Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|center]] Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters. [[File:diagram_axi4lite_periph_added.png|center]]<br /> Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update. ''Right click axi4_lite_led_IP_0 block --> Edit in IP Packager''. Then do the following edits to axi4_lite_led_IP_v1_0_S00_AXI.vhd and axi4_lite_led_IP_v1_0.vhd<br /> <br /> [[File:led_ip_1.png|400px]] [[File:led_ip_2.png|400px]] [[File:led_ip_3.png|400px]] [[File:S00_1.png|400px]] [[File:S00_2.png|400px]] Save both files, and go into the "Ports and interfaces" tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project. Click on "IP Status" tab, and choose "Upgrade Selected" if you are not automatically prompted. Go back to the Block design diagram, and right-click on the newly created port named "led_port[3:0]" on our custom IP and choose "make external". Save. Open the constraints file ZYBO_Master.xdc located under Constraints in the sources tab design tree. To avoid tons of warnings, comment out everything except from the 4 lines under "##LEDs". Rewrite them to the following:<br /><br /> set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led_port[3] }]; <br /> set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led_port[2] }]; <br /> set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led_port[1] }]; <br /> set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { led_port[0] }]; <br /> Save the file, and click "Generate Bitstream". Accept the launch of synthesis and implementation. When complete, you can choose to open the implemented design and have a look at it, or specify timing restraints. = Exporting Bitstream = Goto: ''File --> Export --> Export Hardware'', and choose to include bitstream. You are now done with this tutorial. 61118ae5d25ca89d7e9452694b1f46027e1d097e 2628 2627 2017-12-06T13:25:42Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado 2017.3, using the Xilinx Digilent Zybo SoC. = Create a Project = Start ./vivado from installed directory. Goto: ''File -> New Project -> Next''. For this project we will name it "axi4_lite_tutorial_project" and place it in a folder named tutorials. Click Next and choose RTL Project, then Next. [[File:New_project_name.png|thumbnail|center]] Do not add any sources, but make sure that both target and simulator language is set to the appropriate language you're using. In this project we will use VHDL. Click Next. Here you must provide a constraints file named "ZYBO_Master.xdc", available from [https://github.com/Digilent/digilent-xdc/ GitHub]. Make sure that the option to copy the constraints file(s) into the project is marked. For the next step, the board files for the board we're using must have been installed. If this is not the case, follow [https://reference.digilentinc.com/reference/software/vivado/board-files?redirect=1 this tutorial] to do so. [[File:new_project_default_part.png|thumbnail|center]] Choose the Zybo board, click next, and finish. = Creating a block desgin = The project has now been created and ready for IP-block integration. Click on "Create Block Design" in the left of the window. Give the design a name, for instance design_1, and click "OK".[[File:create_block_design.png|thumbnail|center]] Now press the "+" button in the diagram window, and search for "ZYNQ7 Processing System". Double click to add. In the top of the window an option to "Run Block Automation" appears.. Click this, and complete with default settings. The window should now look like this: [[File:first_block.png|thumbnail|center]] = Create a Custom AXI4-lite IP block = Goto: ''Tools -> Create and Package New IP''. Choose "Create a New AXI4 peripheral", and click next. Name the IP "axi4_lite_led_IP" or any other suiting name. You can leave all other parameters default. In the next window, ensure the IP contains one slave interface named S00_AXI of type "Lite". Click next, and choose "Add IP to the repository". Finish.[[File:add_interfaces_axi4lite.png|thumbnail|center]] In the diagram window it's now possible to add the IP we just created, using the "+" button. Search for "axi4_lite_led_IP_v1.0" and add it. Run connection/block automation with default parameters. [[File:diagram_axi4lite_periph_added.png|center]]<br /> Right click on "design_1" under "Block Designs" in the Sources design tree. Click "Create HDL Wrapper", and let Vivado manage wrapper and auto-update. ''Right click axi4_lite_led_IP_0 block --> Edit in IP Packager''. Then do the following edits to axi4_lite_led_IP_v1_0_S00_AXI.vhd and axi4_lite_led_IP_v1_0.vhd<br /> <br /> [[File:led_ip_1.png|400px]] [[File:led_ip_2.png|400px]] [[File:led_ip_3.png|400px]] [[File:S00_1.png|400px]] [[File:S00_2.png|400px]] Save both files, and go into the "Ports and interfaces" tab. Click "Merge changes from Ports and Interfaces Wizard". A new port should now be listed named "led_port". Click on "Review and Package", and click Re-Package IP. Click yes on prompt to close project. Click on "IP Status" tab, and choose "Upgrade Selected" if you are not automatically prompted. Go back to the Block design diagram, and right-click on the newly created port named "led_port[3:0]" on our custom IP and choose "make external". Save. = Editing the Constraints file = Open the constraints file ZYBO_Master.xdc located under Constraints in the sources tab design tree. To avoid tons of warnings, comment out everything except from the 4 lines under "##LEDs" since we're only using them for this project. Rewrite them to the following:<br /><br /> set_property -dict { PACKAGE_PIN M14 IOSTANDARD LVCMOS33 } [get_ports { led_port[3] }]; <br /> set_property -dict { PACKAGE_PIN M15 IOSTANDARD LVCMOS33 } [get_ports { led_port[2] }]; <br /> set_property -dict { PACKAGE_PIN G14 IOSTANDARD LVCMOS33 } [get_ports { led_port[1] }]; <br /> set_property -dict { PACKAGE_PIN D18 IOSTANDARD LVCMOS33 } [get_ports { led_port[0] }]; <br /> Save the file, and click "Generate Bitstream". Accept the launch of synthesis and implementation. When complete, you can choose to open the implemented design and have a look at it, or specify timing restraints. = Exporting Bitstream = Goto: ''File --> Export --> Export Hardware'', and choose to include bitstream. You are now done with this tutorial. 3839cf1c998744f4744492e19677cda055b5273b FreeRTOS 0 630 2623 2578 2017-12-06T12:23:12Z Yag005 96 wikitext text/x-wiki [[Running FreeRTOS on Xilinx Zybo]] - How to get FreeRTOS to run on the Xilinx Zybo SoC. [[FreeRTOS FSBL]] - First Stage Bootloader: Run FreeRTOS by booting OS and application project from SD-card. 4818e0b571cca796479959aba640860fa54b0fb4 2624 2623 2017-12-06T12:23:26Z Yag005 96 wikitext text/x-wiki [[Running FreeRTOS on Xilinx Zybo]] - How to get FreeRTOS to run on the Xilinx Zybo SoC.<br /> [[FreeRTOS FSBL]] - First Stage Bootloader: Run FreeRTOS by booting OS and application project from SD-card. aa9451860c97088b9a9dbb3d77a40f950eb5fd38 FreeRTOS FSBL 0 631 2625 2586 2017-12-06T12:25:05Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Running FreeRTOS on Xilinx Zybo]]"-tutorial. ===== Exporting hardware bitstream ===== After the bitstream was generated in the previous tutorial, it is now possible to export it. ''Goto: File -> Export -> Export Hardware..'' Make sure to include bitstream, and press "OK". [[File:export_hardware.png|thumbnail|center]] Next, goto: ''File -> Launch SDK''. The following window will appear: [[File:Launch SDK.png|thumbnail|center]] Press "OK" and wait for Xilinx SDK to start up and finish loading. ... Work in progress ... b6e176bae5c20f2c717714831b37ac51b5645fa9 2656 2625 2017-12-06T17:53:43Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Running FreeRTOS on Xilinx Zybo]]"-tutorial. ===== Creating FSBL ===== The result from the previous tutorial linked at the top of this tutorial, should be a Project Explorer looking like this: [[File:project_explorer_start.png|400px|center]]<br /> Goto ''File --> New --> Application Project''. Name the new project "FSBL" and let OS platform be "standalone". On the next page, choose the "Zynq FSBL"-template. Finish. The Project Explorer should now contain the following: [[File:fsbl_created.png|400px|center]]<br /> d2af558400cfc375401ee2700c8fa179d4036cbb 2657 2656 2017-12-06T18:22:13Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Running FreeRTOS on Xilinx Zybo]]"-tutorial. ===== Creating FSBL ===== The result from the previous tutorial linked at the top of this tutorial, should be a Project Explorer looking like this: [[File:project_explorer_start.png|400px|center]]<br /> Goto ''File --> New --> Application Project''. Name the new project "FSBL" and let OS platform be "standalone". On the next page, choose the "Zynq FSBL"-template. Finish. The Project Explorer should now contain the following: [[File:fsbl_created.png|400px|center]]<br /> Goto ''Xilinx --> Create Boot Image''. Choose the Zynq architecture and click to browse for a Output BIF file path. Name the file "output.bif" and create a folder called "output" within the axi4_lite_tutorial_project.sdk directory. Click OK. Check that the output format is "BIN". Now click add in the Boot Image Partitions section: Choose "Bootloader" as partition type, and navigate to the file "FSBL.elf" under \axi4_lite_tutorial_project.sdk\FSBL\Debug\ in the file path.<br /> Now add a new partition, this time as type "datafile". The file that should be added to file path is "design_1_wrapper.bit" under \axi4_lite_tutorial_project.runs\impl_1\<br /> The third and final partition: Partition type "datafile", name: FreeRTOS_example_project.elf File path: \axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\Debug\<br /> <br /> When all partitions have been added, click "Create Image". Navigate to the directory you specified for output, in our case \axi4_lite_tutorial_project.sdk\output. It should now contain two files: BOOT.bin, and output.bif. Copy the BOOT.bin file onto an SD-card formatted as FAT. Bring up your favorite Xilinx Zybo SoC board, and configure jumper 5 (JP5) for SD boot configuration. Insert the SD card, and connect a power source (wall or USB). Then power up the board. After a couple of seconds, it should behave just as it did when booting from JTAG in the "[[Running FreeRTOS on Xilinx Zybo]]"-tutorial. 60b32b4e50a2cfd13bcb645d9e651d4a5a7527b2 2658 2657 2017-12-06T18:23:32Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Running FreeRTOS on Xilinx Zybo]]"-tutorial. ===== Creating FSBL ===== The result from the previous tutorial linked at the top of this tutorial, should be a Project Explorer looking like this: [[File:project_explorer_start.png|400px|center]]<br /> Goto ''File --> New --> Application Project''. Name the new project "FSBL" and let OS platform be "standalone". On the next page, choose the "Zynq FSBL"-template. Finish. The Project Explorer should now contain the following: [[File:fsbl_created.png|400px|center]]<br /> Goto ''Xilinx --> Create Boot Image''. Choose the Zynq architecture and click to browse for a Output BIF file path. Name the file "output.bif" and create a folder called "output" within the axi4_lite_tutorial_project.sdk directory. Click OK. Check that the output format is "BIN". Now click add in the Boot Image Partitions section: Choose "Bootloader" as partition type, and navigate to the file "FSBL.elf" under \axi4_lite_tutorial_project.sdk\FSBL\Debug\ in the file path.<br /> Now add a new partition, this time as type "datafile". The file that should be added to file path is "design_1_wrapper.bit" under \axi4_lite_tutorial_project.runs\impl_1\<br /> The third and final partition is of type "datafile", has the name "FreeRTOS_example_project.elf", and is found at \axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\Debug\<br /> <br /> When all partitions have been added, click "Create Image". Navigate to the directory you specified for output, in our case \axi4_lite_tutorial_project.sdk\output. It should now contain two files: BOOT.bin, and output.bif. Copy the BOOT.bin file onto an SD-card formatted as FAT. Bring up your favorite Xilinx Zybo SoC board, and configure jumper 5 (JP5) for SD boot configuration. Insert the SD card, and connect a power source (wall or USB). Then power up the board. After a couple of seconds, it should behave just as it did when booting from JTAG in the "[[Running FreeRTOS on Xilinx Zybo]]"-tutorial. b6fd866d111c5e76ba0223b62bb7e2a24afd9410 Running FreeRTOS on Xilinx Zybo 0 647 2626 2017-12-06T12:25:12Z Yag005 96 Created page with "Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-..." wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. f5d91b1b58ba70b2f2ca983eca838b80224fb006 2629 2626 2017-12-06T13:26:34Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new blank application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". 2e9a7d8826107dec1e10a3b2691aa0a2714ef65c 2632 2629 2017-12-06T14:58:50Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. Download and extract FreeRTOS available at the FreeRTOS homepage: https://www.freertos.org/a00104.html Copy the following files from the downloaded Free into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\ FreeRTOS_asm_vectors.S FreeRTOSConfig.h FreeRTOS_tick_config.c main.c printf-stdarg.c \FreeRTOSV8.2.1\FreeRTOS\Source\ croutine.c event_groups.c list.c queue.c tasks.c timers.c \FreeRTOSV8.2.1\FreeRTOS\Source\include\ croutine.h deprecated_definitions.h event_groups.h FreeRTOS.h list.h mpu_prototypes.h mpu_wrappers.h portable.h projdefs.h queue.h semphr.h StackMacros.h task.h timers.h \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\ heap_4.c \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\ port.c portASM.S portmacro.h 1aaff64e1c36fd120ab3a9289d48421f5dc5881b 2633 2632 2017-12-06T15:03:51Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. Download and extract FreeRTOS available at the FreeRTOS homepage: #REDIRECT [[https://www.freertos.org/a00104.html]]<br /> Copy the following files from the downloaded Free into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> 9d03409c2509d6fc235c3fece57fbf4d7883d576 2634 2633 2017-12-06T15:11:10Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. Download and extract FreeRTOS available at the FreeRTOS homepage: #Link [[https://www.freertos.org/a00104.html]]<br /> Copy the following files from the downloaded Free into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> 1cbf0097596c31383109473d7e4c8c20cc4439bc 2635 2634 2017-12-06T15:16:55Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> Open the extracted into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> 9491fea45bb0f4abdfec68a698a675b3096fcd14 2636 2635 2017-12-06T15:19:48Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> 237fab026cdc8a4d335413b3d90268db97e186a3 2638 2636 2017-12-06T15:23:53Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]] 64f9cd87f130b6fe27c9bbb2a9d08a42f1714a6f 2642 2638 2017-12-06T15:51:50Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder: [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px]|center] 75ddc55b89d8a888600a3a26e2acca2af21540ee 2643 2642 2017-12-06T15:52:54Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder: [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> = Setting CPU frequency = Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px]|center] e4a1c63c24a4daf9938ef35ef9f5ae106207d54d 2644 2643 2017-12-06T15:53:45Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder: [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> = Setting CPU frequency = Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px|center]] 2105480957ef39a4521a2a0299f9a7a0efa726de 2645 2644 2017-12-06T16:00:46Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder: [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> = Setting CPU frequency = Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px|center]] = Write the application = Go back into Xilinx SDK and refresh(F5). All the added files should now be visible in the project explorer. e720ae276413a310aa6a02fa100e619ae9bd0e3e 2647 2645 2017-12-06T17:01:26Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> platform.c<br /> platform.h<br /> printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder: [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> = Setting CPU frequency = Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px|center]] = Write the application = Go back into Xilinx SDK and refresh(F5). All the added files should now be visible in the project explorer. ffd47fd8ebcfc09314a078e8daf6201bf3f4db9f 2650 2647 2017-12-06T17:26:22Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> platform.c<br /> platform.h<br /> platform_config.h printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder: [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> = Setting CPU frequency = Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px|center]] = Write the application = Go back into Xilinx SDK and refresh(F5). All the added files should now be visible in the project explorer. Open main.c, and comment out the call to ''vParTestInitialise()'' from the ''prvSetupHardware'' function as it is not related to the Zybo board. Also comment out all the included headerfiles under "Standard Demo Include:<br /> [[File:remove_include_demo_libs.png|400px|center]]<br /> Also set ''#define mainSELECTED_APPLICATION 0'' instead of 1. It should be located around line 141. e210c9b090e948c1225ec4e66b4769a5a99a131e 2653 2650 2017-12-06T17:44:53Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. Tutorial heavily based on: #REDIRECT [[http://rishifranklin.blogspot.no/2015/04/freertos-on-xilinx-zynq-zybo-single-core.html]] This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> platform.c<br /> platform.h<br /> platform_config.h printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder: [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> = Setting CPU frequency = Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px|center]] = Write the application = Go back into Xilinx SDK and refresh(F5). All the added files should now be visible in the project explorer. Open main.c, and comment out the call to ''vParTestInitialise()'' from the ''prvSetupHardware'' function as it is not related to the Zybo board. Also comment out all the included headerfiles under "Standard Demo Include:<br /> [[File:remove_include_demo_libs.png|400px|center]]<br /> Also set ''#define mainSELECTED_APPLICATION 0'' instead of 1. It should be located around line 141. Add ''#define AXI_LED_BASE 0x43c30000'' somewhere in the top of the code, but not within any functions, for example right after all the #includes. Time to write the actual code. Add the following as a function before main: [[File:AXILedBlink_code.png|400px|center]]<br /> <br /> The last thing we need to do code vise, is to call the function we just created in the main function: [[File:main_code.png|400px|center]]<br /> <br /> Save, then goto ''Project --> Build All''. Time to test the software! Bring up your favorite Xilinx Zybo SoC board, and ensure that jumper 5 (JP5) is configured for booting via JTAG. Connect the board to the computer, and power it up. Then in Xilinx SDK, goto ''Xilinx --> Program FPGA''. If successful, goto ''Run --> Run as --> 1 Launch on Hardware (System Debugger)''. The 4 LEDs on the board should now light up and blink. End of tutorial! 7e740395373adda96f2e7eee1c89b203b396da1c Microelectronics group 0 25 2630 2575 2017-12-06T13:29:31Z Yag005 96 wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[FreeRTOS]] Free Real Time Operating System * [[Vivado]] Xilinx Vivado == Andre fagressurser og laboratorieveiledninger== * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] 0870724ffc107bbd35dfbda61c61b380dd0e2984 2659 2630 2018-01-04T14:27:58Z Yag005 96 Added Xilinx to comply with readability criteria. wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Xilinx === * [[Vivado]] Xilinx Vivado * [[SDK]] Xilinx Software Development Kit === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[FreeRTOS]] Free Real Time Operating System == Andre fagressurser og laboratorieveiledninger== * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] 88ac289fe1e65816d5b676d92b820cfdaa2a6e7e 2661 2659 2018-01-04T14:30:22Z Yag005 96 wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Xilinx === * [[Xilinx Vivado]] Tutorials for Xilinx Vivado * [[Xilinx SDK]] Tutorials for Xilinx Software Development Kit === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[FreeRTOS]] Free Real Time Operating System == Andre fagressurser og laboratorieveiledninger== * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] f47579d2c53a92386d52211f08f8c9dccdf23ec7 File:Source folder.png 6 649 2637 2017-12-06T15:23:38Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2646 2637 2017-12-06T16:04:11Z Yag005 96 Yag005 uploaded a new version of [[File:Source folder.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 2648 2646 2017-12-06T17:05:49Z Yag005 96 Yag005 uploaded a new version of [[File:Source folder.png]] wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Lscript id edit.png 6 650 2639 2017-12-06T15:39:41Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Port c edit.png 6 651 2640 2017-12-06T15:46:43Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:FreeRTOSConfig cpu freq edit.png 6 652 2641 2017-12-06T15:51:30Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Remove include demo libs.png 6 653 2649 2017-12-06T17:24:00Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:AXILedBlink code.png 6 654 2651 2017-12-06T17:32:58Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Main code.png 6 655 2652 2017-12-06T17:35:42Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Project explorer start.png 6 656 2654 2017-12-06T17:49:01Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Fsbl created.png 6 657 2655 2017-12-06T17:53:30Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Xilinx Vivado 0 659 2662 2018-01-04T14:31:21Z Yag005 96 Created page with "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]" wikitext text/x-wiki [[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]] 8cd5d1141749af1af3e75db16716fa2c58da38c4 Xilinx SDK 0 660 2663 2018-01-04T14:32:00Z Yag005 96 Created page with "[[Running concurrent application projects in Xilinx SDK]]" wikitext text/x-wiki [[Running concurrent application projects in Xilinx SDK]] 91a879a9b25c3750e1eeeb76c6fa1ac848f56c61 File:Running concurrent xilinx sdk not added.png 6 661 2664 2018-01-04T15:08:06Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 File:Running concurrent xilinx sdk added.png 6 662 2665 2018-01-04T15:17:11Z Yag005 96 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Running concurrent application projects in Xilinx SDK 0 663 2666 2018-01-04T15:19:13Z Yag005 96 Created page with "Tested on Xilinx SDK 2017.4, with Xilinx Digilent Zybo SoC. = Running concurrent application projects in Xilinx SDK = This tutorial gives a brief introduction to running conc..." wikitext text/x-wiki Tested on Xilinx SDK 2017.4, with Xilinx Digilent Zybo SoC. = Running concurrent application projects in Xilinx SDK = This tutorial gives a brief introduction to running concurrent application projects in Xilinx SDK on a micro processor. This is done by assigning each of the Application Projects a specific processor core to run on. = Requirements = This tutorial requires a multi-core micro processor system that can be programmed by Xilinx SDK. It also assumes that the user has two working independent Project applications with respective Board Support Packages (BSP's) generated by the "File --> New --> Project Application" menu. = Assigning application project to specific processor core = Click once on one of the Application projects in the Project Explorer Tree. Goto: "Run --> Run Configurations". Then click on "System Debugger using Debug_standalone_bsp_0_NAMEOFYOURPROJECT.elf on Local" under "Xilinx C/C++ application (SystemDebugger). Then open the Application tab. You should now see that your application is configured in the Summary window to run on core 0 on whatever processor you're using. [[File:running_concurrent_xilinx_sdk_not_added.png|400px|thumbnail]] The next step is to take use of the other processor core, by assigning it the other application project you want to run. Click on the line with the processor core you want to use (ps7_cortexa9_1 for this tutorial), mark "Download", and click on Browse in the Application bar. Find the nameofproject.elf file for the application project, usually found under /NameOfVivadoProject.sdk/NameOfProject/Debug/NameOfProject.elf. For this tutorial we added the FreeRTOS.elf created in the [[Running FreeRTOS on Xilinx Zybo]]-tutorial. It should now look like this: [[File:running_concurrent_xilinx_sdk_added.png|400px|thumbnail]] Click Apply, and run. This should program the processor over JTAG, and both applications should be up and running. 08e612da9975f43fcf1758b81c527716faf27215 2667 2666 2018-01-04T15:19:45Z Yag005 96 wikitext text/x-wiki Tested on Xilinx SDK 2017.4, with Xilinx Digilent Zybo SoC. = Running concurrent application projects in Xilinx SDK = This tutorial gives a brief introduction to running concurrent application projects in Xilinx SDK on a micro processor. This is done by assigning each of the Application Projects a specific processor core to run on. = Requirements = This tutorial requires a multi-core micro processor system that can be programmed by Xilinx SDK. It also assumes that the user has two working independent Project applications with respective Board Support Packages (BSP's) generated by the "File --> New --> Project Application" menu. = Assigning application project to specific processor core = Click once on one of the Application projects in the Project Explorer Tree. Goto: "Run --> Run Configurations". Then click on "System Debugger using Debug_standalone_bsp_0_NAMEOFYOURPROJECT.elf on Local" under "Xilinx C/C++ application (SystemDebugger). Then open the Application tab. You should now see that your application is configured in the Summary window to run on core 0 on whatever processor you're using. [[File:running_concurrent_xilinx_sdk_not_added.png|400px|thumbnail|center]] The next step is to take use of the other processor core, by assigning it the other application project you want to run. Click on the line with the processor core you want to use (ps7_cortexa9_1 for this tutorial), mark "Download", and click on Browse in the Application bar. Find the nameofproject.elf file for the application project, usually found under /NameOfVivadoProject.sdk/NameOfProject/Debug/NameOfProject.elf. For this tutorial we added the FreeRTOS.elf created in the [[Running FreeRTOS on Xilinx Zybo]]-tutorial. It should now look like this: [[File:running_concurrent_xilinx_sdk_added.png|400px|thumbnail|center]] Click Apply, and run. This should program the processor over JTAG, and both applications should be up and running. d5d69c6d381aa1dc14d7cc92814bce9e94a8f842 Running FreeRTOS on Xilinx Zybo 0 647 2668 2653 2018-01-09T13:58:17Z Yag005 96 wikitext text/x-wiki Tested on Xilinx Vivado/SDK 2017.3, Ubuntu 16.04 LTS. Tutorial heavily based on: #REDIRECT [[http://rishifranklin.blogspot.no/2015/04/freertos-on-xilinx-zynq-zybo-single-core.html]] This tutorial assumes you have completed the "[[Creating example project with AXI4 Lite peripheral in Xilinx Vivado]]"-tutorial. = Running FreeRTOS on Xilinx Zybo = This tutorial will help in setting up Xilinx Zybo SoC-board to run FreeRTOS with an example project that toggles the LEDs on the board. It assumes that the user has successfully exported the hardware bitstream from the Xilinx Vivado project created in the previous tutorial linked at the top. = Setup SDK = Launch Xilinx SDK from the project in Xilinx Vivado: ''File --> Launch SDK''. Create a new application project with ''File --> New --> Application Project'' and name it "FreeRTOS_example_project". Use C as language, standalone as OS. Click next, select "Empty Application", and finish. = Acquire FreeRTOS = Download and extract FreeRTOS available at the FreeRTOS homepage: #Homepage [[https://www.freertos.org/a00104.html]]<br /> = Add FreeRTOS to the project = Open the extracted folder, and copy the following files into the SDK project source folder located at: \axi3_lite_tutorial_project\axi4_lite_tutorial_project.sdk\FreeRTOS_example_project\src\ \FreeRTOSV8.2.1\FreeRTOS\Demo\CORTEX_A9_Zynq_ZC702\RTOSDemo\src\<br /> FreeRTOS_asm_vectors.S<br /> FreeRTOSConfig.h<br /> FreeRTOS_tick_config.c<br /> main.c<br /> platform.c<br /> platform.h<br /> platform_config.h printf-stdarg.c<br /> <br /> \FreeRTOSV8.2.1\FreeRTOS\Source\<br /> croutine.c<br /> event_groups.c<br /> list.c<br /> queue.c<br /> tasks.c<br /> timers.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\include\<br /> croutine.h<br /> deprecated_definitions.h<br /> event_groups.h<br /> FreeRTOS.h<br /> list.h<br /> mpu_prototypes.h<br /> mpu_wrappers.h<br /> portable.h<br /> projdefs.h<br /> queue.h<br /> semphr.h<br /> StackMacros.h<br /> task.h<br /> timers.h<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\MemMang\<br /> heap_4.c<br /><br /> \FreeRTOSV8.2.1\FreeRTOS\Source\portable\GCC\ARM_CA9\<br /> port.c<br /> portASM.S<br /> portmacro.h<br /> <br /> Your SDK project source folder should now look like this: [[File:source_folder.png|thumbnail|center]]<br /> Edit the highlighted line to the lscript.id file located in the SDK project source folder to contain "*(.freertos_vectors)": [[File:lscript_id_edit.png|400px|center]]<br /> Comment out "*pxTopOfStack |= portTHUMB_MODE_BIT;" on line 280 in port.c to avoid FreeRTOS to run in thumb-mode: [[File:port_c_edit.png|400px|center]]<br /> <br /> = Setting CPU frequency = Next we should configure the CPU to run at 50MHz in the FreeRTOSConfig.h file by editing the configCPU_CLOCK_HZ parameter: [[File:FreeRTOSConfig_cpu_freq_edit.png|400px|center]] = Write the application = Go back into Xilinx SDK and refresh(F5). All the added files should now be visible in the project explorer. Open main.c, and comment out the call to ''vParTestInitialise()'' from the ''prvSetupHardware'' function as it is not related to the Zybo board. Also comment out all the included headerfiles under "Standard Demo Include:<br /> [[File:remove_include_demo_libs.png|400px|center]]<br /> Also set ''#define mainSELECTED_APPLICATION 0'' instead of 1. It should be located around line 141. Add ''#define AXI_LED_BASE 0x43c30000'' somewhere in the top of the code, but not within any functions, for example right after all the #includes. Time to write the actual code. Add the following as a function before main: [[File:AXILedBlink_code.png|400px|center]]<br /> <br /> The last thing we need to do code vise, is to call the function we just created in the main function: [[File:main_code.png|400px|center]]<br /> <br /> Save, then goto ''Project --> Build All''. Time to test the software! Bring up your favorite Xilinx Zybo SoC board, and ensure that jumper 5 (JP5) is configured for booting via JTAG. Connect the board to the computer, and power it up. Then in Xilinx SDK, goto ''Xilinx --> Program FPGA''. If successful, goto ''Run --> Run as --> 1 Launch on Hardware (System Debugger)''. The 4 LEDs on the board should now light up and blink. End of tutorial! 57ef37cf885313d78740f1145256c8a27698e3e0 PHYS321 0 278 2669 2418 2018-01-12T10:33:39Z Mer020 87 wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://klabs.org/richcontent/Tutorial/tutorial.htm Tutorials for Programmable Logic and Military/Aerospace Systems] (broken link) * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Using Vivado ==== * [[Install Vivado 2015.4 with free licens]] * [[VGA controller VHDL code]] * [[Nexys4_Master.xdc]] * [[Using the VGA controller with block ram generator and clock wizard]] === Gamle øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] 73dde613fdce1d2153902105a6cf3ee4eaa9386e Strålevern 0 572 2670 2411 2018-02-26T11:58:36Z Gge002 52 /* Regler for bruk av strålekilder på IFT */ wikitext text/x-wiki ==Førstegangsbrukere== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ==Regler for bruk av strålekilder på IFT== [[File:hierarket.jpg|thumb|alt=Hierarke|Fig. 1 Hierarke]] [[File:TableHeader.jpg|thumb|alt=Logbokformat|Fig. 2 Logbokformat]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. 2200b9f74fa1542522794ca8b5eaf3433932f507 2703 2670 2018-05-29T14:30:34Z Gge002 52 wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. c1321126d4841f1d5342bdd5977df92978971fa8 2711 2703 2018-11-16T10:43:39Z Gge002 52 wikitext 2712 2711 2018-11-16T11:12:06Z Gge002 52 wikitext 2713 2712 2018-11-16T11:15:13Z Gge002 52 wikitext 2714 2713 2018-11-16T11:47:10Z Gge002 52 wikitext 2715 2714 2018-11-16T11:58:34Z Gge002 52 wikitext 2716 2715 2018-11-16T12:11:07Z Gge002 52 wikitext 2717 2716 2018-11-16T12:28:41Z Gge002 52 wikitext 2718 2717 2018-11-16T12:30:18Z Gge002 52 wikitext 2719 2718 2018-11-16T12:40:18Z Gge002 52 wikitext Bitvis UVVM VHDL Verification Component Framework 0 481 2671 2439 2018-03-08T13:18:14Z Put009 99 Corrected write and read signal names in set_inputs_passive and fixed dead link wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> The presentation can also be found in the uvvm_util folder. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [https://github.com/UVVM/UVVM_All Bitvis github]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wena <= '0'; sbi_if.rena <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] 92833b53eed35233a8271fe235015a1b73959906 XJTAG 0 189 2672 2323 2018-03-12T11:49:59Z Put009 99 Updated path to XJTAG 3.5 wikitext text/x-wiki =XJEase and XJDeveloper Tutorial= You should run the tutorial at Program Files> XJTAG 3.5 > Help > XJEase and XJDeveloper tutorial. The program this tutorial is designed for is called XJDeveloper 3.5. This tutorial assumes you have a version 3.1 of the XJDemo board. In the help folder there is a turtorial.zip file with the files you're going to use. Unzip this to a new folder for your project. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. On the 3.1 version you will see the name written on the card. [[Image:XJDemo v1.2.png|292px]][[Image:XJDemo v2.0.png|292px]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board. Refer to the schematic for the pinmapping for page 11 of the tutorial. # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. =Additional resources= [[XJTAG_for_new_prototypes]] [[Category:Mikroelektronikk]] 3c91aa6ce4a56fa5307e6ff85da6694fbe283e83 Synthese av VHDL - Oppdatert 0 539 2673 2505 2018-03-12T14:14:52Z Put009 99 Link til intel si nedlastingsside for quartus og modelsim wikitext text/x-wiki Obs! Fra Quartus Prime Handbook: Gate-level timing simulation of an entire design can be slow and should be avoided. Gate-level timing simulation is supported only for the Stratix IV and Cyclone IV device families. Use TimeQuest static timing analysis rather than gate-level timing simulation. ===Syntetiseringen av VHDL kode=== Vi ønsker å syntisere koden for å lage beskrivelse av koden tilpasset en FPGA-chip. Vi skal først syntisere koden med Quartus. Deretter skal vi simulere denne koden og sammenligne med den opprinnelige koden uten timing-informasjon. Vi bruker en ALU som eksempel. Det er viktig at vi bruker Quartus og ModelSim fra samme utgivelse om vi ikke ønsker å kompilere våre egne simuleringsbibliotek. Du kan installere Quartus og ModelSim gratis og bruke lisens-server på UiB sitt nettverk. Vi bruker Quartus Prime 15.1 og ModelSim 10.4b. Quartus og Intel sin Modelsim versjon kan lastest ned [http://dl.altera.com/?product=modelsim_ae her]. ==Quartus== Lag et nytt prosjekt, kall det add_sub_alu og velg en passende mappe. Velg empty project, og deretter legg til add_sub_alu.vhd. Velg en CycloneIV-chip. Vi valgte EP4CE115F29. Det er chipen på Terasic DE2-115. Pass på at add_sub_alu.vhd er valgt som top-level og trykk så Start Compilation (Ctrl-L). Dette gjør at Quartus går gjennom alle stegene for å produsere filene vi er ute etter. I simulation/modelsim/ finner vi nå add_sub_alu.vho og add_sub_alu_vhd.sdo. Vho-filen(VHDL Output File) er filen som inneholder nå det opprinnelige designet, men også mange nye moduler med cycloneive-prefix. Disse entitetene beskriver ressurser på den fysiske FPGA-chipen. Sdo-filen(Standard Delay Format Output File) inneholder detaljer om delay fra hver modul på chippen. ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila for designet add_sub_alu.vhd og testbenken alu_tb.vhd. Så legg vi til fila som Quartus generte i prosjektdir til simulation/modelsim/add_sub_alu.vho. Den Quartus-genererte filen vil ha samme entitetsnavn som den opprinnelige, og vil derfor ikke kunne simuleres samtid. Vi endrer derfor den genererte filen til å ha entiteten 'add_sub_alu_synth' og architecturen 'structure' (i vårt tilfelle endret den seg til structure automatisk). Vi kan nå kompilere filene våre og deretter simulere testbenken. I testbenken vår ser vi at vi har kalt den syntiserte entiteten alu_synt. Dette skal vi bruke nå. ==Simulering med timing== Velg Start Simulation - deretter work og alu_tb. Se så på SDF-fanen. Legg til add_sub_alu_vhd.sdo generert av Quartus tidligere. Under apply to region må du skrive: /alu_tb/alu_synt Dette er altså området vi ønsker at sdo-filen skal gi informasjon om. Trykk så OK. add wave * run -all Vi kan nå sammenligne utsignalene for den usyntiserte og den syntiserte ALU-komponenten. ==Konklusjon== Vi ser at vi får masse feil før 50 ns. Dette skyldes at den opprinnelige komponenten ikke har definerte signaler før de første klokkeflankene, mens den syntiserte komponenten ikke kan ha udefinerte signaler. Senere får vi feil når signalene skifter. Dette skyldes at den syntiserte komponenten bruker lengre tid på å sende ut riktig signal, og vil også glitche mellom verdier før den stabiliserer seg på riktig verdi. ==Kode== ===Kode til add_sub_alu.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] [[Category:VHDL]] 6d186c7bc6487d0f96c10a3438b69035700a6a31 Modelsim/Questa 0 33 2674 2395 2018-03-13T12:38:41Z Put009 99 Updated a dead link wikitext text/x-wiki <!-- Mapping av alterabibliotek: <pre> vmap cyclonev /prog/altera/vhdl_libs/cyclonev vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> --> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] [[Synthese av VHDL - Oppdatert]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] <!-- [http://www.ashenden.com.au/ Ashenden Designs] dead link --> [http://freerangefactory.org/books_tuts.html Free Range VHDL textbook] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] <!-- [http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)] dead link --> [http://www.ioenotes.edu.np/media/notes/embedded-system/vhdl.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [http://bitvis.no/products/bitvis-utility-library/ Bitvis utility library] [[Category:Mikroelektronikk]] ade7d1bf7beb213b584207dce1815e43023fbfc6 User:Fli091 2 608 2675 2572 2018-03-22T13:08:12Z Fli091 93 sandbox and category wikitext text/x-wiki [mailto:fli091@uib.no mailto:fli091@uib.no] == Sandbox == * [[User:Fli091/Print schematics with Cadence]] == Diverse lenker == * [https://www.eda.ncsu.edu/wiki/FreePDK The FreePDKTM process design kit is an open-source, Open-Access-based PDK for the 45nm technology] * [http://venividiwiki.ee.virginia.edu/mediawiki/index.php/ToolsCadenceTutorialsBasicSimulationOceanFreePDK Simulere med Cadence via OCEAN skript] * [https://drive.google.com/file/d/0B8aUrqN1GG-DMl9Mc29rQnRpaVE/edit En presentasjon av hvordan lage OCEANskript] [[Category:Microelectronics Users|FredrikLindseth]] ab4451ff9b9b693af2c8762533f6d615ed8f0202 File:CadencePrintWindow.png 6 665 2678 2018-03-22T13:45:11Z Fli091 93 A screenshot of the print-window in Cadence Virtuoso wikitext text/x-wiki A screenshot of the print-window in Cadence Virtuoso e3cfa7d51273ff59e4309c61acaffd7af59bf9b9 File:CadencePlotOptions.png 6 666 2679 2018-03-22T13:46:34Z Fli091 93 A screenshot showing the plot options window in Cadence Virtuoso wikitext text/x-wiki A screenshot showing the plot options window in Cadence Virtuoso e86ca7228e474497f6380caae27a77296dca4552 File:Shaper.ps.jpg 6 667 2684 2018-03-22T14:24:16Z Fli091 93 The output of the Cadence postscript-printer converted to jpg for showing on the wiki wikitext text/x-wiki The output of the Cadence postscript-printer converted to jpg for showing on the wiki 352edb1b8c0671a34a3d18b8e2b6f67092e822c1 Print schematics with Cadence 0 668 2686 2018-03-22T14:28:35Z Fli091 93 Created page wikitext text/x-wiki = Print schematics from Cadence Virtuoso = This article will show you how to save your schematics in a vectorised format so they can be manipulated or embedded in a report or a thesis. Doing it this way, instead of "Export image" will result in something that looks useable and high resolution. It is based on this youtube-movie https://www.youtube.com/watch?v=JivgqYabhWI == Procedure == 1. Locate the file containing the plotter-setups. It comes with the technology package and is located here: /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit 2. Move the file to your own tsmc-folder mv /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit ~/tsmc/.cdsplotinit [[File:CadencePrintWindow.png|300px|thumb|right|The print-window in Virtuoso]] 3. Rename "your plotter": Change line 18, "Encapsulated PostScript:" to "p1|Encapsulated PostScript:" gedit ~/tsmc/.cdsplotinit or vim ~/tsmc/.cdsplotinit * If you get the error *Error* lessp: can't handle (nil <nil) you have to restart virtuoso for the plotters to be enabled 4. Now to print. First you might want to set a paper size. This is done here: File - Print - Plot Options ... - Paper Size Make sure the "Plotter Name" is what you called your plotter (p1). 5. Check the boxes "Fit to Page" and "Center plot" 6. Uncheck the the box "Mail Log To" and check the box "Send Plot Only To File" and set the path to where you want your plots/prints/schematics to be stored. This is also where you decide on a filename ~/tsmc/printedFromVirtuoso/voltageBuffer.ps [[File:CadencePlotOptions.png|300px|thumb|right|The plot options-window in Virtuoso]] 7. Make sure the folder you have set to save your files in exist or Virtuoso will just output a warning ala *WARNING* (SCH-1266): Cannot write to file "~/tsmc/printedFromVirtuoso/buffer.ps". Create the folder: mkdir ~/tsmc/printedFromVirtuoso/ 8. Click OK in the Plot Options windows 9. Uncheck the "Plot with: header" box, just above the notes window 10. Press OK to save the schematic. Now you can open the output.ps-file and it will look something like this: [[File:Shaper.ps.jpg|center|thumb|The output of the Cadence postscript-printer converted to jpg]] For the next schematics you want to plot you only have to "File - Print - Plot Options ...", change your filename and press OK. === Tips to make the schematic look better === ==== Disable all annotations ==== Do the following twice, once to enable this (and disable anything else) and the one more time to disable it again View - Annotations - Component Parameters This will make the schematic look cleaner and will hide fingers and channel lengths, etc. You could also do the same with net names, and possibly hide instance labels View - Hide Instance Labels ==== Wider lines ==== Open the outputfile (.ps) in a text editor and find setlinewidth This set the width of all lines and can be changed to i.e. 2 for wider lines. 2 setlinewidth Note: if you have text (not disabled annotations etc) the letters might mix together. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 93fe5d519ce7f9c9f67fbc247b37e446659fcd6f 2687 2686 2018-03-22T14:29:29Z Fli091 93 Formatting wikitext text/x-wiki = Print schematics from Cadence Virtuoso = This article will show you how to save your schematics in a vectorised format so they can be manipulated or embedded in a report or a thesis. Doing it this way, instead of "Export image" will result in something that looks useable and high resolution. It is based on this youtube-movie https://www.youtube.com/watch?v=JivgqYabhWI == Procedure == 1. Locate the file containing the plotter-setups. It comes with the technology package and is located here: /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit 2. Move the file to your own tsmc-folder mv /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit ~/tsmc/.cdsplotinit [[File:CadencePrintWindow.png|300px|thumb|right|The print-window in Virtuoso]] 3. Rename "your plotter": Change line 18, "Encapsulated PostScript:" to "p1|Encapsulated PostScript:" gedit ~/tsmc/.cdsplotinit or vim ~/tsmc/.cdsplotinit * If you get the error *Error* lessp: can't handle (nil <nil) you have to restart virtuoso for the plotters to be enabled 4. Now to print. First you might want to set a paper size. This is done here: File - Print - Plot Options ... - Paper Size Make sure the "Plotter Name" is what you called your plotter (p1). 5. Check the boxes "Fit to Page" and "Center plot" 6. Uncheck the the box "Mail Log To" and check the box "Send Plot Only To File" and set the path to where you want your plots/prints/schematics to be stored. This is also where you decide on a filename ~/tsmc/printedFromVirtuoso/voltageBuffer.ps [[File:CadencePlotOptions.png|300px|thumb|right|The plot options-window in Virtuoso]] 7. Make sure the folder you have set to save your files in exist or Virtuoso will just output a warning ala *WARNING* (SCH-1266): Cannot write to file "~/tsmc/printedFromVirtuoso/buffer.ps". Create the folder: mkdir ~/tsmc/printedFromVirtuoso/ 8. Click OK in the Plot Options windows 9. Uncheck the "Plot with: header" box, just above the notes window 10. Press OK to save the schematic. Now you can open the output.ps-file and it will look something like this: [[File:Shaper.ps.jpg|center|thumb|The output of the Cadence postscript-printer converted to jpg]] For the next schematics you want to plot you only have to "File - Print - Plot Options ...", change your filename and press OK. == Tips to make the schematic look better == === Disable all annotations === Do the following twice, once to enable this (and disable anything else) and the one more time to disable it again View - Annotations - Component Parameters This will make the schematic look cleaner and will hide fingers and channel lengths, etc. You could also do the same with net names, and possibly hide instance labels View - Hide Instance Labels === Wider lines === Open the outputfile (.ps) in a text editor and find setlinewidth This set the width of all lines and can be changed to i.e. 2 for wider lines. 2 setlinewidth Note: if you have text (not disabled annotations etc) the letters might mix together. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] f05cd60eab3d7a1a483361acdf9f20f77e8126f8 2688 2687 2018-03-22T14:46:49Z Fli091 93 /* Tips */ Papersize and conversion to other formats wikitext text/x-wiki = Print schematics from Cadence Virtuoso = This article will show you how to save your schematics in a vectorised format so they can be manipulated or embedded in a report or a thesis. Doing it this way, instead of "Export image" will result in something that looks useable and high resolution. It is based on this youtube-movie https://www.youtube.com/watch?v=JivgqYabhWI == Procedure == 1. Locate the file containing the plotter-setups. It comes with the technology package and is located here: /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit 2. Move the file to your own tsmc-folder mv /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit ~/tsmc/.cdsplotinit [[File:CadencePrintWindow.png|300px|thumb|right|The print-window in Virtuoso]] 3. Rename "your plotter": Change line 18, "Encapsulated PostScript:" to "p1|Encapsulated PostScript:" gedit ~/tsmc/.cdsplotinit or vim ~/tsmc/.cdsplotinit * If you get the error *Error* lessp: can't handle (nil <nil) you have to restart virtuoso for the plotters to be enabled 4. Now to print. First you might want to set a paper size. This is done here: File - Print - Plot Options ... - Paper Size Make sure the "Plotter Name" is what you called your plotter (p1). 5. Check the boxes "Fit to Page" and "Center plot" 6. Uncheck the the box "Mail Log To" and check the box "Send Plot Only To File" and set the path to where you want your plots/prints/schematics to be stored. This is also where you decide on a filename ~/tsmc/printedFromVirtuoso/voltageBuffer.ps [[File:CadencePlotOptions.png|300px|thumb|right|The plot options-window in Virtuoso]] 7. Make sure the folder you have set to save your files in exist or Virtuoso will just output a warning ala *WARNING* (SCH-1266): Cannot write to file "~/tsmc/printedFromVirtuoso/buffer.ps". Create the folder: mkdir ~/tsmc/printedFromVirtuoso/ 8. Click OK in the Plot Options windows 9. Uncheck the "Plot with: header" box, just above the notes window 10. Press OK to save the schematic. Now you can open the output.ps-file and it will look something like this: [[File:Shaper.ps.jpg|center|thumb|The output of the Cadence postscript-printer converted to jpg]] For the next schematics you want to plot you only have to "File - Print - Plot Options ...", change your filename and press OK. == Tips == === Disable all annotations === Do the following twice, once to enable this (and disable anything else) and the one more time to disable it again View - Annotations - Component Parameters This will make the schematic look cleaner and will hide fingers and channel lengths, etc. You could also do the same with net names, and possibly hide instance labels View - Hide Instance Labels === Wider lines === Open the outputfile (.ps) in a text editor and find setlinewidth This set the width of all lines and can be changed to i.e. 2 for wider lines. 2 setlinewidth Note: if you have text (not disabled annotations etc) the letters might mix together. === Sizing the "paper" === Changing the papersize from 5x5 to "unlimited" results in a larger plot, the filesize increased to 125%, but since PS is not a bitmap this is irrelevant as the schematic can be scaled to whatever size. === Convert the postscript(ps) to another format === On linux there are several tools that easily converts. For example ps2pdf output.ps output.pdf Results in a nice PDF to put in reports/theses. The conversion can also be changed to .png or .jpg [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 5d6c65fe12b90866bb345c370ee1647a45bd3608 2689 2688 2018-03-22T14:50:46Z Fli091 93 /* Convert the postscript(ps) to another format */ Save to File/PDF wikitext text/x-wiki = Print schematics from Cadence Virtuoso = This article will show you how to save your schematics in a vectorised format so they can be manipulated or embedded in a report or a thesis. Doing it this way, instead of "Export image" will result in something that looks useable and high resolution. It is based on this youtube-movie https://www.youtube.com/watch?v=JivgqYabhWI == Procedure == 1. Locate the file containing the plotter-setups. It comes with the technology package and is located here: /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit 2. Move the file to your own tsmc-folder mv /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit ~/tsmc/.cdsplotinit [[File:CadencePrintWindow.png|300px|thumb|right|The print-window in Virtuoso]] 3. Rename "your plotter": Change line 18, "Encapsulated PostScript:" to "p1|Encapsulated PostScript:" gedit ~/tsmc/.cdsplotinit or vim ~/tsmc/.cdsplotinit * If you get the error *Error* lessp: can't handle (nil <nil) you have to restart virtuoso for the plotters to be enabled 4. Now to print. First you might want to set a paper size. This is done here: File - Print - Plot Options ... - Paper Size Make sure the "Plotter Name" is what you called your plotter (p1). 5. Check the boxes "Fit to Page" and "Center plot" 6. Uncheck the the box "Mail Log To" and check the box "Send Plot Only To File" and set the path to where you want your plots/prints/schematics to be stored. This is also where you decide on a filename ~/tsmc/printedFromVirtuoso/voltageBuffer.ps [[File:CadencePlotOptions.png|300px|thumb|right|The plot options-window in Virtuoso]] 7. Make sure the folder you have set to save your files in exist or Virtuoso will just output a warning ala *WARNING* (SCH-1266): Cannot write to file "~/tsmc/printedFromVirtuoso/buffer.ps". Create the folder: mkdir ~/tsmc/printedFromVirtuoso/ 8. Click OK in the Plot Options windows 9. Uncheck the "Plot with: header" box, just above the notes window 10. Press OK to save the schematic. Now you can open the output.ps-file and it will look something like this: [[File:Shaper.ps.jpg|center|thumb|The output of the Cadence postscript-printer converted to jpg]] For the next schematics you want to plot you only have to "File - Print - Plot Options ...", change your filename and press OK. == Tips == === Disable all annotations === Do the following twice, once to enable this (and disable anything else) and the one more time to disable it again View - Annotations - Component Parameters This will make the schematic look cleaner and will hide fingers and channel lengths, etc. You could also do the same with net names, and possibly hide instance labels View - Hide Instance Labels === Wider lines === Open the outputfile (.ps) in a text editor and find setlinewidth This set the width of all lines and can be changed to i.e. 2 for wider lines. 2 setlinewidth Note: if you have text (not disabled annotations etc) the letters might mix together. === Sizing the "paper" === Changing the papersize from 5x5 to "unlimited" results in a larger plot, the filesize increased to 125%, but since PS is not a bitmap this is irrelevant as the schematic can be scaled to whatever size. === Convert the postscript(ps) to another format === On linux there are several tools that easily converts. For example ps2pdf output.ps output.pdf Results in a nice PDF to put in reports/theses. The conversion can also be changed to .png or .jpg An alternative way to convert is to open the outpus.ps in a PDF viewer. Choose "Print" and "Print to File" and save the file as a PDF. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] d1755e7bad665b4ba67a2540bdf875975c399ef5 2690 2689 2018-03-24T12:47:17Z Fli091 93 /* Convert the postscript(ps) to another format */ epstopdf conversion and whitespace around schematics wikitext text/x-wiki = Print schematics from Cadence Virtuoso = This article will show you how to save your schematics in a vectorised format so they can be manipulated or embedded in a report or a thesis. Doing it this way, instead of "Export image" will result in something that looks useable and high resolution. It is based on this youtube-movie https://www.youtube.com/watch?v=JivgqYabhWI == Procedure == 1. Locate the file containing the plotter-setups. It comes with the technology package and is located here: /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit 2. Move the file to your own tsmc-folder mv /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit ~/tsmc/.cdsplotinit [[File:CadencePrintWindow.png|300px|thumb|right|The print-window in Virtuoso]] 3. Rename "your plotter": Change line 18, "Encapsulated PostScript:" to "p1|Encapsulated PostScript:" gedit ~/tsmc/.cdsplotinit or vim ~/tsmc/.cdsplotinit * If you get the error *Error* lessp: can't handle (nil <nil) you have to restart virtuoso for the plotters to be enabled 4. Now to print. First you might want to set a paper size. This is done here: File - Print - Plot Options ... - Paper Size Make sure the "Plotter Name" is what you called your plotter (p1). 5. Check the boxes "Fit to Page" and "Center plot" 6. Uncheck the the box "Mail Log To" and check the box "Send Plot Only To File" and set the path to where you want your plots/prints/schematics to be stored. This is also where you decide on a filename ~/tsmc/printedFromVirtuoso/voltageBuffer.ps [[File:CadencePlotOptions.png|300px|thumb|right|The plot options-window in Virtuoso]] 7. Make sure the folder you have set to save your files in exist or Virtuoso will just output a warning ala *WARNING* (SCH-1266): Cannot write to file "~/tsmc/printedFromVirtuoso/buffer.ps". Create the folder: mkdir ~/tsmc/printedFromVirtuoso/ 8. Click OK in the Plot Options windows 9. Uncheck the "Plot with: header" box, just above the notes window 10. Press OK to save the schematic. Now you can open the output.ps-file and it will look something like this: [[File:Shaper.ps.jpg|center|thumb|The output of the Cadence postscript-printer converted to jpg]] For the next schematics you want to plot you only have to "File - Print - Plot Options ...", change your filename and press OK. == Tips == === Disable all annotations === Do the following twice, once to enable this (and disable anything else) and the one more time to disable it again View - Annotations - Component Parameters This will make the schematic look cleaner and will hide fingers and channel lengths, etc. You could also do the same with net names, and possibly hide instance labels View - Hide Instance Labels === Wider lines === Open the outputfile (.ps) in a text editor and find setlinewidth This set the width of all lines and can be changed to i.e. 2 for wider lines. 2 setlinewidth Note: if you have text (not disabled annotations etc) the letters might mix together. === Sizing the "paper" === Changing the papersize from 5x5 to "unlimited" results in a larger plot, the filesize increased to 125%, but since PS is not a bitmap this is irrelevant as the schematic can be scaled to whatever size. === Convert the postscript(ps) to another format === On linux there are several tools that easily converts. For example ps2pdf output.ps output.pdf or epstopdf outpus.ps Results in a nice PDF to put in reports/theses. The conversion can also be changed to .png or .jpg An alternative way to convert is to open the outpus.ps in a PDF viewer. Choose "Print" and "Print to File" and save the file as a PDF. Note: some of these conversion might put the postscript-file on a large A4-paper with whitespace all around. Try epstopdf if this happens, it does not do that. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 09a92d073a6474a23b4f566638b43e1e7511af00 2691 2690 2018-03-24T12:47:33Z Fli091 93 /* Convert the postscript(ps) to another format */ typo wikitext text/x-wiki = Print schematics from Cadence Virtuoso = This article will show you how to save your schematics in a vectorised format so they can be manipulated or embedded in a report or a thesis. Doing it this way, instead of "Export image" will result in something that looks useable and high resolution. It is based on this youtube-movie https://www.youtube.com/watch?v=JivgqYabhWI == Procedure == 1. Locate the file containing the plotter-setups. It comes with the technology package and is located here: /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit 2. Move the file to your own tsmc-folder mv /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit ~/tsmc/.cdsplotinit [[File:CadencePrintWindow.png|300px|thumb|right|The print-window in Virtuoso]] 3. Rename "your plotter": Change line 18, "Encapsulated PostScript:" to "p1|Encapsulated PostScript:" gedit ~/tsmc/.cdsplotinit or vim ~/tsmc/.cdsplotinit * If you get the error *Error* lessp: can't handle (nil <nil) you have to restart virtuoso for the plotters to be enabled 4. Now to print. First you might want to set a paper size. This is done here: File - Print - Plot Options ... - Paper Size Make sure the "Plotter Name" is what you called your plotter (p1). 5. Check the boxes "Fit to Page" and "Center plot" 6. Uncheck the the box "Mail Log To" and check the box "Send Plot Only To File" and set the path to where you want your plots/prints/schematics to be stored. This is also where you decide on a filename ~/tsmc/printedFromVirtuoso/voltageBuffer.ps [[File:CadencePlotOptions.png|300px|thumb|right|The plot options-window in Virtuoso]] 7. Make sure the folder you have set to save your files in exist or Virtuoso will just output a warning ala *WARNING* (SCH-1266): Cannot write to file "~/tsmc/printedFromVirtuoso/buffer.ps". Create the folder: mkdir ~/tsmc/printedFromVirtuoso/ 8. Click OK in the Plot Options windows 9. Uncheck the "Plot with: header" box, just above the notes window 10. Press OK to save the schematic. Now you can open the output.ps-file and it will look something like this: [[File:Shaper.ps.jpg|center|thumb|The output of the Cadence postscript-printer converted to jpg]] For the next schematics you want to plot you only have to "File - Print - Plot Options ...", change your filename and press OK. == Tips == === Disable all annotations === Do the following twice, once to enable this (and disable anything else) and the one more time to disable it again View - Annotations - Component Parameters This will make the schematic look cleaner and will hide fingers and channel lengths, etc. You could also do the same with net names, and possibly hide instance labels View - Hide Instance Labels === Wider lines === Open the outputfile (.ps) in a text editor and find setlinewidth This set the width of all lines and can be changed to i.e. 2 for wider lines. 2 setlinewidth Note: if you have text (not disabled annotations etc) the letters might mix together. === Sizing the "paper" === Changing the papersize from 5x5 to "unlimited" results in a larger plot, the filesize increased to 125%, but since PS is not a bitmap this is irrelevant as the schematic can be scaled to whatever size. === Convert the postscript(ps) to another format === On linux there are several tools that easily converts. For example ps2pdf output.ps output.pdf or epstopdf output.ps Results in a nice PDF to put in reports/theses. The conversion can also be changed to .png or .jpg An alternative way to convert is to open the outpus.ps in a PDF viewer. Choose "Print" and "Print to File" and save the file as a PDF. Note: some of these conversion might put the postscript-file on a large A4-paper with whitespace all around. Try epstopdf if this happens, it does not do that. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 465062aeb12f1172802b5ba8224462e19054deb3 2692 2691 2018-03-24T13:51:06Z Fli091 93 /* Tips */ =Using the schematics in latex= wikitext text/x-wiki = Print schematics from Cadence Virtuoso = This article will show you how to save your schematics in a vectorised format so they can be manipulated or embedded in a report or a thesis. Doing it this way, instead of "Export image" will result in something that looks useable and high resolution. It is based on this youtube-movie https://www.youtube.com/watch?v=JivgqYabhWI == Procedure == 1. Locate the file containing the plotter-setups. It comes with the technology package and is located here: /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit 2. Move the file to your own tsmc-folder mv /eda/cadence/2016-17/RHELx86/IC_6.1.7.704/tools.lnx86/plot/etc/cdsplotinit ~/tsmc/.cdsplotinit [[File:CadencePrintWindow.png|300px|thumb|right|The print-window in Virtuoso]] 3. Rename "your plotter": Change line 18, "Encapsulated PostScript:" to "p1|Encapsulated PostScript:" gedit ~/tsmc/.cdsplotinit or vim ~/tsmc/.cdsplotinit * If you get the error *Error* lessp: can't handle (nil <nil) you have to restart virtuoso for the plotters to be enabled 4. Now to print. First you might want to set a paper size. This is done here: File - Print - Plot Options ... - Paper Size Make sure the "Plotter Name" is what you called your plotter (p1). 5. Check the boxes "Fit to Page" and "Center plot" 6. Uncheck the the box "Mail Log To" and check the box "Send Plot Only To File" and set the path to where you want your plots/prints/schematics to be stored. This is also where you decide on a filename ~/tsmc/printedFromVirtuoso/voltageBuffer.ps [[File:CadencePlotOptions.png|300px|thumb|right|The plot options-window in Virtuoso]] 7. Make sure the folder you have set to save your files in exist or Virtuoso will just output a warning ala *WARNING* (SCH-1266): Cannot write to file "~/tsmc/printedFromVirtuoso/buffer.ps". Create the folder: mkdir ~/tsmc/printedFromVirtuoso/ 8. Click OK in the Plot Options windows 9. Uncheck the "Plot with: header" box, just above the notes window 10. Press OK to save the schematic. Now you can open the output.ps-file and it will look something like this: [[File:Shaper.ps.jpg|center|thumb|The output of the Cadence postscript-printer converted to jpg]] For the next schematics you want to plot you only have to "File - Print - Plot Options ...", change your filename and press OK. == Tips == === Disable all annotations === Do the following twice, once to enable this (and disable anything else) and the one more time to disable it again View - Annotations - Component Parameters This will make the schematic look cleaner and will hide fingers and channel lengths, etc. You could also do the same with net names, and possibly hide instance labels View - Hide Instance Labels === Wider lines === Open the outputfile (.ps) in a text editor and find setlinewidth This set the width of all lines and can be changed to i.e. 2 for wider lines. 2 setlinewidth Note: if you have text (not disabled annotations etc) the letters might mix together. === Sizing the "paper" === Changing the papersize from 5x5 to "unlimited" results in a larger plot, the filesize increased to 125%, but since PS is not a bitmap this is irrelevant as the schematic can be scaled to whatever size. === Using the schematics in latex === I recommend converting the ps-files to PDF it you want to use them in a latex-document. The ps can't be used directly and would have to be converted to eps, and since one is already converting PDF is a better choice. The converted PDF files are also 1/3 to 1/4 the size of the ps- and the eps-files and can be used without hassle as long as one uses the \usepackage{graphicx}-package. and the include the graphics like so \begin{figure}[ptbh!] \centering \includegraphics[width=0.5\textwidth]{pictures/nmos_folded_cascode.pdf} \caption{Folded cascode amplifier with NMOS input transistor.}\label{fig:foldedCascode} \end{figure} === Convert the postscript(ps) to another format === On linux there are several tools that easily converts. For example epstopdf output.ps or ps2pdf output.ps output.pdf Results in a nice PDF to put in reports/theses. With ps2pdf the conversion can also be changed to output .png or .jpg An alternative way to convert is to open the output.ps in a PDF viewer. Choose "Print" and "Print to File" and save the file as a PDF. Note: some of these conversion might put the postscript-file on a large A4-paper with whitespace all around. Try epstopdf if this happens, it does not do that. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 6a46dbd29b525c1dc8696801f66e6e57b7d81d14 TSMC 130nm process 0 461 2693 2531 2018-04-11T11:46:17Z Put009 99 Moved launch ade gxl from entering to simulation wikitext text/x-wiki =Cadence design with TSMC 130nm process= This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ==Setup of Cadence== To start virtuoso one must first connect to mikroserver3 ssh -X mikroserver3 '''First''' time you should add the following line to your cds.lib-file by running this command: mkdir ~/tsmc echo "DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf" > ~/tsmc/cds.lib Then ('''each time''') run these commands to set up Cadence source /eda/cadence/2016-17/scripts/analog_flow.sh source /eda/cadence/eda_general_init.sh Virtuoso Mixed Signal Design Environment is started by issuing this command: virtuoso & === Troubleshooting === * Make sure you source the script from the correct year. I.e 2016-17 and not 2015-16 * Make sure you are connected the the right mikroserver * Make sure you run virtuoso from the same folder as your 'cds.lib'-folder ('~/tsmc/') == Getting started == In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. ==Simulating the design== # Open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] # Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 32ac2abe3eec95852a63a22b9d876bb52b496c8e 2694 2693 2018-04-11T13:33:24Z Put009 99 wikitext text/x-wiki =Cadence design with TSMC 130nm process= This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ==Setup of Cadence== To start virtuoso one must first connect to mikroserver3 ssh -X mikroserver3 '''First''' time you should add the following line to your cds.lib-file by running this command: mkdir ~/tsmc echo "DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf" > ~/tsmc/cds.lib Then ('''each time''') run these commands to set up Cadence source /eda/cadence/2016-17/scripts/analog_flow.sh source /eda/cadence/eda_general_init.sh Virtuoso Mixed Signal Design Environment is started by issuing this command: virtuoso & === Troubleshooting === * Make sure you source the script from the correct year. I.e 2016-17 and not 2015-16 * Make sure you are connected the the right mikroserver * Make sure you run virtuoso from the same folder as your 'cds.lib'-folder ('~/tsmc/') == Getting started == In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. ==Simulating the design== # Open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] ea87904fbd4c82befb39e05fd0e1c420d96e5b18 2710 2694 2018-11-06T09:50:53Z Put009 99 Added if IHP are used, use SG13_dev technology wikitext text/x-wiki =Cadence design with TSMC 130nm process= This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ==Setup of Cadence== To start virtuoso one must first connect to mikroserver3 ssh -X mikroserver3 '''First''' time you should add the following line to your cds.lib-file by running this command: mkdir ~/tsmc echo "DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf" > ~/tsmc/cds.lib Then ('''each time''') run these commands to set up Cadence source /eda/cadence/2016-17/scripts/analog_flow.sh source /eda/cadence/eda_general_init.sh Virtuoso Mixed Signal Design Environment is started by issuing this command: virtuoso & === Troubleshooting === * Make sure you source the script from the correct year. I.e 2016-17 and not 2015-16 * Make sure you are connected the the right mikroserver * Make sure you run virtuoso from the same folder as your 'cds.lib'-folder ('~/tsmc/') == Getting started == In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. ==Simulating the design== # Open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 7acba97a819f4625dac1ff70cb857b375096144f Cadence Testbench 0 478 2695 2512 2018-04-21T17:01:31Z Put009 99 Added simulation procedure wikitext text/x-wiki = Simulate with corner cases = To simulate with the corner cases in the fabrication process you have to add the corner files provided in the design kit. [[File:Selection_001.png|200px]] Choose "Click to add corner" "Click to add" the model files you need. Ex. The corner files for the MOS transistor in IHP130nm process is located in $IHP_TECH/tech/SG13_MOS/library/spectre/cornerMOSlv_psp.scs After adding the model files needed proceed by adding multiple corners: [[File:corner.png|400px]] The model files contains sections with the different corners. Choose sections and make sure you enable the section "tick box" and name the corner with a corresponding name: [[File:sections.png|400px]] The corners setup also makes it possible to simulate for different temperatures or design variables like VDD and transistor length. Ex. test for three different temperatures with comma as separation: -20,30,80 [[File:complete.png|400px]] To the do the simulation take a look at the "Data View" tab again. Make sure you have selected the corners, the desired test and global variables, and that they have the correct value. Then at the drop down menu in the toolbar, where stand "Single Run, Sweeps and Corners" click the light green play button. This will run the selected test, with your parameter values and selected corners. Wait for the simulation to complete, and then you can plot different corners, or use the "Plot All" button to get all corners plotted. [[Category:Mikroelektronikk]] 9aa8533ae3f0f06082ded5802ec82050cee01ccb MikroserverSetup 0 614 2696 2563 2018-04-21T17:17:17Z Put009 99 Added command for copying folders wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no == SSH key == * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no == Connection aliases == For ease of use set up aliases for the connections in your terminal. Open .bashrc in a text editor (vim / nano) and type in this alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no' alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no' alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no' Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc == Automatic sourcing == Source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2016-17/scripts/analog_flow.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc == Commands to run virtuoso remotely == Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3.ift.uib.no/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/fredrik/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:path/to/folder/to/copy/to * this will copy the file to your home folder on any UiB machine * To copy a folder scp -r NameOfFolder USERNAME@login.uib.no:path/to/folder/to/copy/to == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] a6ff7e3c7a0b7c9ddd8d2196fe061f055a8bc371 File:ASSURA QRC.png 6 669 2697 2018-05-03T08:52:49Z Put009 99 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Extracted layout SRAM with bt wd.png 6 670 2698 2018-05-04T11:43:10Z Put009 99 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:LVS summary.png 6 671 2699 2018-05-04T15:00:27Z Put009 99 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Hierarchy editor.png 6 672 2700 2018-05-04T15:28:55Z Put009 99 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Layout XL and IHP SG13S 0 546 2701 2501 2018-05-04T15:47:57Z Put009 99 Added Parasitic extraction QRC and Post Layout Simulation wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. The user guide "SG13_user_guide.pdf" can be also be found in the folder "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/doc/pdf" on the microserver. [[File:Documentation.png|200px]] If your laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus QRC. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". The run the QRC. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. [[Category:Mikroelektronikk]] 30b98e9fbc148495581448e29f554f84d72e7442 File:Hierarket.jpg 6 673 2702 2018-05-29T13:29:58Z Gge002 52 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ATLASThesesNotes 0 234 2704 2537 2018-08-17T11:19:39Z Nfyst 67 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 61f85b84f5fda6304005aa5a99c947fe717832ab PHYS222 0 202 2705 2360 2018-08-23T08:24:06Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [http://www.k-state.edu/ksuedl/publications/Technote%201%20-%20Equivalent%20Noise%20Bandwidth.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] 82b90d34acc1116e07d68a16e20bd7c337cb0a2a 2706 2705 2018-09-13T08:49:03Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://microscopy.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] 72e0882234deb6e4d1ca56da912661c0ad5274e5 2707 2706 2018-09-13T08:52:08Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [http://www.elsevierdirect.com/companion.jsp?ISBN=9781558605572 Logical Effort book web] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] a71db79a1c659e54edf42d67bf59524bf0f65946 2708 2707 2018-09-13T09:10:10Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] 48c1e5df48e085c02e1cf1256aaa7ab732a38e13 Gitlab 0 568 2709 2438 2018-10-30T12:07:54Z Nfyku 4 Changed from gitlab to git.app wikitext text/x-wiki == Software repository == We use the '''git.app''' server hosted by IT of University of Bergen. Further information: * [https://docs.gitlab.com/ce/gitlab-basics/README.html Gitlab basics] * [https://docs.gitlab.com/ee/workflow/README.html Gitlab workflow] == Development workflow == Every logged-in user can access the main repository, however only a small group of administrators has write access. To contribute, a user creates a ''fork'' from the repository. This is a copy where a single developer or a group of developers have full access. The main repository has the following branches: * '''production''': the latest production code, in this branch we have release tags * '''master''': the latest stable release * '''dev''': the development branch In addition to those main branches there can be ''feature'' branches where development happens detached from the main branches. A ''feature'' branch is based on the ''dev'' branch and has a limited lifetime. === Creating a project fork === A ''project fork'' or ''repository fork'' is a copy of the original repository where a user or a group of users has/have full control. All development in our project is carried out in the individual forks. Branches of project forks are merged back into the main repository by '''merge requests''', preferably via '''fast forward''' merges. That requires developers to rebase project forks to the main repository and resolve all conflicts before requesting a merge. [https://docs.gitlab.com/ce/gitlab-basics/fork-project.html How to fork a project] Your repository fork is your sandbox, you can do whatever you want. Unless you have your own rules at hand right now you can apply the following: * leave the ''master'' branch in sync with the main repository, do not make commits to it * commit your changes to the ''dev'' branch * if you start a new feature, and it's expected to take a while, make a ''feature'' branch, e.g. ''dev-feature'' and give the feature a name * synchronize regularly to the main repository by rebasing === Making local development copy === Clone directly from your development fork, replace ''user'' appropriately. '''Note''': the gitlab offers two modes for the link to be cloned, you can choose ''ssh'' (default setting) or ''https''. If you can not clone with the proposed default link, try option ''https://''. git clone https://user@git.app.uib.no/space/asdc.git This repository will get the name ''origin'' in your local clone. If you have cloned already from the main repository, the upstream link can be changed as follows cd <reponame> git remote set-url origin https://user@git.app.uib.no/asim/asdc.git === Pushing to development fork === Once you have added commits to e.g. the '''dev''' branch, those commits can be ''pushed'' upstream to the fork. git push origin dev === Pull/Merge request === All updates to the main repository are made via ''merge requests'' (github refers to them as ''pull requests''). A merge request requires the code update to be in a mergable branch in a development fork. Merge request are also used widely to share ''work-in-progress'' with your colleagues and for code reviews. Mark such Merge request with "'''WIP:'''". ==== Preparation ==== In order to avoid conflicts, first the fork has to be updated to the main repository. The idea behind this is that all potential conflicts can be resolved by the developer with the best knowledge about the matter, while the maintainer can simple merge ''fast-forward''. ==== Example workflow for a Merge request ==== # Go to your gitlab user space at [https://git.app.uib.no/user https://git.app.uib.no/user] (replace ''user'' appropriately. # Find the project fork, e.g. in the list of projects associated with you from the upper main menu. # In the line with the many columns regarding the repository, click on the "+"-symbol on the right hand side and choose "New merge request" # Select project and branch for both source and target, and click "Compare branches and continue" # Review the list of commits in this merge request, give it a descriptive title and description, pick an assignee # Submit the merge request === Importing an external package === The project will use a couple of external packages which are hosted in a different master repository. Copies of such external packages can be added to the gitlab server under our project group to provide a consistent package. Here is a proposed workflow for importing a package which is already hosted in git. # Create new repository in the asim group or ask for creation, lets call it ''newPackage'' # Fork the repository to your user space # Clone the package you want to import #:<pre> git clone <some_external_link> newPackage # we give it the new name</pre> #:<pre> cd newPackage</pre> # Redirect upstream URL to the fork in your gitlab user space #:<pre> git remote set-url origin https://user@git.app.uib.no/user/newPackage.git</pre> # Now make a forced push (option ''-f'') to import the repository to your fork #:<pre> git push -f origin</pre> # Create merge request to branch ''import'' (if not existing, ''master'' or any other appropriate branch) by following the instructions [[Documentation#Pull/Merge request | Pull/Merge request]] [[Category:Mikroelektronikk]] 3a354ea716def12b7187c2a9890def9d19705eef Strålevern 0 572 2720 2719 2018-11-16T12:55:19Z Gge002 52 wikitext 2721 2720 2018-11-16T13:01:23Z Gge002 52 wikitext 2722 2721 2018-11-16T13:16:44Z Gge002 52 wikitext 2723 2722 2018-11-16T13:18:15Z Gge002 52 wikitext 2724 2723 2018-11-16T13:58:24Z Gge002 52 wikitext 2725 2724 2018-11-16T14:16:48Z Gge002 52 wikitext 2726 2725 2018-11-16T14:35:40Z Gge002 52 wikitext 2727 2726 2018-11-16T14:47:23Z Gge002 52 wikitext 2728 2727 2018-11-16T17:45:58Z Gge002 52 wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. ==List of sealed sources at the IFT== ===Storage 4=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 4 #1 | <sup>241</sup>Am | 27 | 1 000 | 2006 | 458 y | 60 keV gamma | OI428/Code: AMRB 13788 |- | 2 | Storage 4 #2 | <sup>57</sup>Co | 100 | 3 700 | 2006 | 272 d | 122 keV gamma | Code: CTR 8252 |- | 3 | Storage 4 #3 | <sup>133</sup>Ba | 100 | 3 700 | 2006 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Code: BDR 8252 |- | 4 | Storage 4 #4 | <sup>155</sup>Eu | 100 | 3 700 | 1993 | 4.8 y | 105 keV gamma | |- | 5 | Storage 4 #5 | <sup>226</sup>Ra | 2.7 | 100 | ~1970 | 1 600 y | 186 keV gamma | |- | 6 | Storage 4 #6 | <sup>137</sup>Cs | 60 | 2 200 | 1986 | 30 y | 662 keV gamma | |- | 7 | Storage 4 #7 | <sup>241</sup>Am | 3 000 | 100 000 | 1977 | 458 y | 60 keV gamma | UB/FIB 539 |- | 8 | Storage 4 #8 | <sup>241</sup>Am | 10 000 | 370 000 | 1987 | 458 y | | Variable X-ray source |- | 9 | Storage 4 #9 | <sup>55</sup>Fe | 20 000 | 740 000 | N/A | 2.7 y | X-rays | Decayed |- | 10 | Storage 4 #10 | <sup>109</sup>Cd | 1 | 37 | 2011 | 427 d | 88 keV gamma | Calibr. Set Spectrum Techniques |- | 11 | Storage 4 #11 | <sup>57</sup>Co | 1 | 37 | 2011 | 272 d | 122 keV gamma | Calibr. Set Spectrum Techniques |- | 12 | Storage 4 #12 | <sup>133</sup>Ba | 1 | 37 | 2011 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. Set Spectrum Techniques |- | 13 | Storage 4 #13 | <sup>60</sup>Co | 1 | 37 | 2011 | 5.3 y | 1 173, 1 333 keV gamma | Calibr. Set Spectrum Techniques |- | 14 | Storage 4 #14 | <sup>137</sup>Cs | 1 | 37 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 15 | Storage 4 #15 | <sup>22</sup>Na | 1 | 37 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 16 | Storage 4 #16 | <sup>137</sup>Cs<sup>65</sup>Zn | 1 | 37 | 2011 | 30 y + 244 d | 662 + 1 116 keV gamma | Calibr. Set Spectrum Techniques |- | 17 | Storage 4 #17 | <sup>54</sup>Mn | 1 | 37 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 18 | Storage 4 #18 | <sup>137</sup>Cs | 10 | 370 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 19 | Storage 4 #19 | <sup>22</sup>Na | 10 | 370 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 20 | Storage 4 #20 | <sup>54</sup>Mn | 10 | 370 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 21 | Storage 4 #21 | <sup>133</sup>Ba | 10 | 370 | 2012 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. source Eckert & Ziegler |- | 22 | Storage 4 #22 | <sup>241</sup>Am | 1 | 37 | 1990 | 458 y | 60 keV gamma | Laborel box (ruined and sagregated for disposal) |- | 23 | Storage 4 #23 | <sup>109</sup>Cd | 1 | 37 | 1990 | 427 d | 88 keV gamma | Laborel box |- | 24 | Storage 4 #24 | <sup>139</sup>Ce | 1 | 37 | 1990 | 138 d | 166 keV gamma | Laborel box |- | 25 | Storage 4 #25 | <sup>57</sup>Co | 1 | 37 | 1990 | 272 d | 122 keV gamma | Laborel box |- | 26 | Storage 4 #26 | <sup>137</sup>Cs | 1 | 37 | 1190 | 30 y | 662 keV gamma | Laborel box |- | 27 | Storage 4 #27 | <sup>51</sup>Cr | 1 | 37 | 1990 | 27 d | 320 keV gamma | Laborel box |- | 28 | Storage 4 #28 | <sup>54</sup>Mn | 1 | 37 | 1990 | 312 d | 835 keV gamma | Laborel box |- | 29 | Storage 4 #29 | <sup>113</sup>Sn | 1 | 37 | 1990 | 115 d | 255 keV gamma | Laborel box |- | 30 | Storage 4 #30 | <sup>85</sup>Sr | 1 | 37 | 1990 | 65 d | 355 keV gamma | Laborel box |- | 31 | Storage 4 #31 | <sup>65</sup>Zn | 1 | 37 | 1990 | 244 d | 1 116 keV gamma | Laborel box |- | 32 | Storage 4 #32 | <sup>133</sup>Ba | 4 000 | 148 000 | 2014 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Eckert & Ziegler, Brass holder |- | 33 | Storage 4 #33 | <sup>90</sup>Sr | 54 | 2 010 | 1993 | 29 y | e<sup>-</sup> | DESY |- | 34 | Storage 4 #34 | <sup>55</sup>Fe | 1 000 | 37 000 | 2014 | 2.7 y | X-rays | UiB# 0218698 |- | 35 | Storage 4 #35a | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- | 36 | Storage 4 #35b | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- |} ===Storage 3=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 3 #1 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 2 | Storage 3 #2 | <sup>133</sup>Ba | 1 | 37 | 2013 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | |- | 3 | Storage 3 #3 | <sup>22</sup>Na | 1 | 37 | 2013 | 2.6 y | 511, 1 275 keV gamma | |- | 4 | Storage 3 #4 | <sup>57</sup>Co | 1 | 37 | 2013 | 272 d | 122 keV gamma | |- | 5 | Storage 3 #5a | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 6 | Storage 3 #5b | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 7 | Storage 3 #6 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 3 #7 | <sup>241</sup>Am | 1 | 37 | 1976 | 458 y | Alpha + 60 keV gamma | Glass tube set |- | 9 | Storage 3 #8 | <sup>90</sup>Sr | 1 | 37 | 1976 | 29 y | e<sup>-</sup> | Glass tube set |- | 10 | Storage 3 #9 | <sup>55</sup>Fe | 10 | 370 | 1976 | 30 y | 662 keV gamma | Glass tube set |- | 11 | Storage 3 #10 | <sup>106</sup>Ru | 2.7 | 100 | 2000 | 374 d | e<sup>-</sup> | |- | 12 | Storage 3 #11 | <sup>241</sup>Am | 10 | 370 | 1975 | 458 y | Alpha + 60 keV gamma | ORTEC AM-1U, S/N M-1343, act. 0.088 |- |} ===Storage 2=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 2 #1a | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 2 | Storage 2 #1b | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 3 | Storage 2 #1c | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 4 | Storage 2 #1d | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 5 | Storage 2 #1e | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 6 | Storage 2 #1f | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 7 | Storage 2 #2 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 2 #3a | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 9 | Storage 2 #3b | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 10 | Storage 2 #4a | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 11 | Storage 2 #4b | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 12 | Storage 2 #5a | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 13 | Storage 2 #5b | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 14 | Storage 2 #6 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 15 | Storage 2 #7 | <sup>152</sup>Eu | 0.04 | 1.5 | 2006 | 13.5 y | Many gamma lines | Sealed Liquid |- | 16 | Storage 2 #8a | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 17 | Storage 2 #8b | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 18 | Storage 2 #8c | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 19 | Storage 2 #9a | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 20 | Storage 2 #9b | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 21 | Storage 2 #9c | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 22 | Storage 2 #9d | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 23 | Storage 2 #10 | <sup>152</sup>Eu | 1 | 37 | 2005 | 13.5 y | Many gamma lines | |- | 24 | Storage 2 #11a | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 25 | Storage 2 #11b | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 26 | Storage 2 #11c | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 27 | Storage 2 #11d | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 28 | Storage 2 #12a | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 29 | Storage 2 #12b | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 30 | Storage 2 #12c | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 31 | Storage 2 #13 | <sup>241</sup>Am | 0.24 | 9 | N/A | 458 y | 60 keV gamma | GDM 625 |- | 32 | Storage 2 #14 | <sup>137</sup>Cs | 1.22 | 45 | N/A | 30 y | 662 keV gamma | GDM 134 |- | 33 | Storage 2 #15 | UO<sub>2</sub> | N/A | N/A | N/A | N/A | N/A | Nuclear fuel pellet (black cylinder in epoxy cube) |- |} ===Storage 1=== ====White==== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 1W #1 | <sup>241</sup>Am | 10 000 | 370 000 | | 458 y | X-rays | Variable X-ray source |- | 2 | Storage 1W #2 | <sup>241</sup>Am | 10 | 370 | 1993 | 458 y | 60 keV gamma | DA289 written on the source |- | 3 | Storage 1W #3 | <sup>60</sup>Co | 10 | 370 | 1970 | 10.5 y | 1 173, 1 333 keV gamma | A943F |- | 4 | Storage 1W #4 | <sup>147</sup>Pm | 10 000 | 370 000 | 1974 | 2.6 y | 76, 198 keV gamma | A1124/N11958 |- | 5 | Storage 1W #5 | <sup>137</sup>Cs | 10 | 370 | | 30 y | 662 keV gamma | S/N 15319; A919F |- | 6 | Storage 1W #6 | <sup>60</sup>Co | 1 | 37 | | 10.5 y | 1 173, 1 333 keV gamma | S/N 811-L-1 |- | 7 | Storage 1W #7 | <sup>241</sup>Am | 0.1 | 3.7 | 1966 | 458 y | 60 keV gamma | A922F; S/N M954 Ortec |- | 8 | Storage 1W #8 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 9 | Storage 1W #9 | <sup>137</sup>Cs | 100 | 3 700 | 1984 | 30 y | 662 keV gamma | |- | 10 | Storage 1W #10 | <sup>241</sup>Am | 14 000 | 518 000 | 1984 | 458 y | 60 keV gamma | M55005 |- | 11 | Storage 1W #11 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 12 | Storage 1W #12 | <sup>226</sup>Ra | 5-10 | 185-370 | 1970 | 1 600 y | 186 keV gamma | A859F; Leybold in a jar |- | 13 | Storage 1W #13 | <sup>137</sup>Cs | <10 | <370 | 2005 | 30 y | 662 keV gamma | Isotope generator |- | 14 | Storage 1W #14a | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 15 | Storage 1W #14b | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 16 | Storage 1W #14c | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 17 | Storage 1W #15 | <sup>90</sup>Sr | 2 000 | 74 000 | 1987 | 29 y | e<sup>-</sup> | Amersham (in a square Pb collimator) |- | 18 | Storage 1W #16 | | | | 1945 | | | Hiroshima dust |- | 19 | | | 0 | 0 | 2005 | | | Eluting solution for Tilf #13 Isotope generator |- |} ====Black==== {| class="wikitable" |- ! Item ! Source ID ! Activity, counts/s* ! Note |- | 1 | Storage 1B #1 | ~20 | Storage 1B R. 1 |- | 2 | Storage 1B #2 | ~120 | Storage 1B G. 1 |- | 3 | Storage 1B #3 | ~60 | Storage 1B G. 2 |- | 4 | Storage 1B #4 | ~100 | Storage 1B G. 3 |- | 5 | Storage 1B #5 | ~10 | Storage 1B G. 4 |- | 6 | Storage 1B #6 | ~10 | Storage 1B G. 5 |- | 7 | Storage 1B #7 | ~0 | Storage 1B G. 6 |- | 8 | Storage 1B #8 | ~220 | Storage 1B G. 7 |- | 9 | Storage 1B #9 | ~150 | Storage 1B G. 8 |- | 10 | Storage 1B #10 | ~10 | Storage 1B G. 9 |- | 11 | Storage 1B #11 | ~350 | Storage 1B G. 10 |- | 12 | Storage 1B #12 | ~500 | Storage 1B G. 11 |- | 13 | Storage 1B #13 | ~1 000 | Storage 1B G. 12 |- |} <nowiki>*</nowiki>Activity measured with an 1" NaI(Tl) crystal 94ca13c008cf58a08f251bb3514b34740d696bcd Modelsim/Questa 0 33 2729 2674 2019-01-23T13:06:13Z Nfyku 4 Oppdatert til bitvis UVVM wikitext text/x-wiki <!-- Mapping av alterabibliotek: <pre> vmap cyclonev /prog/altera/vhdl_libs/cyclonev vmap lpm /prog/altera/vhdl_libs/lpm vmap altera /prog/altera/vhdl_libs/altera vmap altera_mf /prog/altera/vhdl_libs/altera_mf </pre> --> [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] [[Synthese av VHDL - Oppdatert]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] <!-- [http://www.ashenden.com.au/ Ashenden Designs] dead link --> [http://freerangefactory.org/books_tuts.html Free Range VHDL textbook] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] <!-- [http://www.ashenden.com.au/designers-guide/VHDL-quick-start.pdf VHDL Quick Start (slides by Ashenden)] dead link --> [http://www.ioenotes.edu.np/media/notes/embedded-system/vhdl.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [https://bitvis.no/dev-tools/uvvm/ Bitvis Universal VHDL Verification Methodology ] [[Category:Mikroelektronikk]] 3c776b44adb85837b7a3ad015a273472ce47102b User:Yag005 2 629 2730 2574 2019-03-02T16:52:10Z Yag005 96 Updated information and added link to thesis wikitext text/x-wiki yag005 is the username for Mats F. Heigre. Mats was part of the microelectronics group in the period August 2016 until he delivered his master thesis and thus finishing his degree in October 2018. His master thesis, Design of an Embedded Readout System for the ALOFT Gamma-Ray Detector Instrument, can be found at BORA under the following link: [http://bora.uib.no/handle/1956/18671 http://bora.uib.no/handle/1956/18671] Contact email: yag005@student.uib.no 1230d4d6cd2f09765d279c0d64ab75b52ff1736b IHP 130nm process 0 472 2731 2548 2019-11-04T09:01:07Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to server (mikroserver2 or mikroserver3): ssh -X mikroserver2 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2018-19/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] 6c425482017399fb40cacfd7eeabd2121b2f5bef 2732 2731 2019-11-04T09:01:36Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to server (mikroserver1 or mikroserver3): ssh -X mikroserver1 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2018-19/scripts/analog_flow.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] 68c8d3208a0b5e4b9e76bd76ea1f954280a35399 2733 2732 2019-11-04T10:18:08Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to server (mikroserver1 or mikroserver3): ssh -X mikroserver1 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_616_rev1.5.0_a/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2018-19/scripts/analog.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] c5cc3cf3e715b3cd3e01ea16e444b601ac69df34 2747 2733 2020-03-30T08:10:28Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver: ssh -X mikroserver4 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_617_rev1.10.1/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2018-19/scripts/analog.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] 71a9591af333e6d37a9eec50ebaf5ef3d130fdfd 2768 2747 2020-10-15T07:58:27Z Nfyku 4 Updated to new software distro and design kit wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver: ssh -X mikroserver4 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2019-20/scripts/analog.sh cd ~/ihp/cds/ source sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] b5a65fbb463ad05cc17255def87f2f01912b84fd 2770 2768 2020-10-15T08:32:12Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver: ssh -X mikroserver4 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2019-20/scripts/analog.sh cd ~/ihp/cds/ source /eda/design_kits/ihp_sg13/sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] Follow the Design Kit User manual found in the menu SG13S Features > Design Kit Documentation. Make sure that your web browser is closed or started from the microserver, else the file will not be found. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] b5a3244736b8a100430eab0e24731421997bbf8a MikroserverSetup 0 614 2734 2696 2019-11-04T14:51:14Z Nfyku 4 wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''''' The three mikroservers are : * mikroserver1.klientdrift.uib.no * mikroserver2.klientdrift.uib.no * mikroserver3.klientdrift.uib.no == SSH key == * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3.klientdrift.uib.no == Connection aliases == For ease of use set up aliases for the connections in your terminal. Open .bashrc in a text editor (vim / nano) and type in this alias mikroserver1='ssh -X USERNAME@mikroserver1.klientdrift.uib.no' alias mikroserver2='ssh -X USERNAME@mikroserver2.klientdrift.uib.no' alias mikroserver3='ssh -X USERNAME@mikroserver3.klientdrift.uib.no' Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3.klientdrift.uib.no'" >> ~/.bashrc == Automatic sourcing == Source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2018-19/scripts/analog.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc == Commands to run virtuoso remotely == Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3.klientdrift.uib.no 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3.ift.uib.no/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/fredrik/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:path/to/folder/to/copy/to * this will copy the file to your home folder on any UiB machine * To copy a folder scp -r NameOfFolder USERNAME@login.uib.no:path/to/folder/to/copy/to == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "fli091" [[Category:Mikroelektronikk]] 7a44e6c46dcf48c6dff33ae123f41a76bb6e638a 2746 2734 2020-03-30T07:54:47Z Nfyku 4 Removed full path references wikitext text/x-wiki = Set-up of connection to mikroservers and cadence virtuoso = This set-up will allow you to connect to the mikroservers and/or start Cadence virtuoso with one command without typing any password or host-names. '''NB: This setup is for TSMC, but the commands can be tweaked to be used with IHP or AMS too.''' There are 4 mikroservers, mikroserver1-mikroserver4 == SSH key == * Generate an ssh-key ssh-keygen -f ~/.ssh/id.rsa -t rsa -N '' * Copy the key with your identity to your chosen mikroserver (mikroserver3 is chosen in this example). NB: Replace USERNAME with your user name ssh-copy-id USERNAME@mikroserver3 == Connection aliases == For ease of use set up aliases for the connections in your terminal. Open .bashrc in a text editor (vim / nano) and type in this alias mikroserver1='ssh -X USERNAME@mikroserver1' alias mikroserver2='ssh -X USERNAME@mikroserver2' alias mikroserver3='ssh -X USERNAME@mikroserver3' Also create another alias for your favourite mikroserver echo "alias mikroserver='ssh -X USERNAME@mikroserver3'" >> ~/.bashrc == Automatic sourcing == Source scripts inside .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually # TSMC setup echo "source /eda/cadence/2018-19/scripts/analog.sh" >> ~/.bashrc echo "source /eda/cadence/eda_general_init.sh" >> ~/.bashrc # IHP setup echo "source ~/ihp/cds/sh.cadence" >> ~/.bashrc == Commands to run virtuoso remotely == Then finally on the computers in the lab (NOT connected to the mikroservers) echo "alias virtuoso_tsmc="ssh -X USERNAME@mikroserver3 'cd tsmc;virtuoso &'"" >> ~/.bashrc echo "alias virtuoso_ihp="ssh -X USERNAME@mikroserver3 'cd ihp/cds;virtuoso &'"" >> ~/.bashrc The next time you open your terminal on your computer you can type virtuoso_tsmc to start Cadence Virtuoso, or mikroserver to connect to mikroserver3 without any hassle! == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/USERNAME/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:path/to/folder/to/copy/to * this will copy the file to your home folder on any UiB machine * To copy a folder scp -r NameOfFolder USERNAME@login.uib.no:path/to/folder/to/copy/to == Troubleshooting == * Make sure you copy your ID (ssh-copy-id) to the correct mikroserver * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB VPN or run the commands via the computers in the lab to be able to connect to microserver * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "abc0123" [[Category:Mikroelektronikk]] e05a6f5755c6a0b739e2312241d116610753f9b0 2754 2746 2020-05-02T14:24:57Z Bhu006 102 Fjernet oppsett av Cadence fra artikkelen siden det dekkes av andre artikler (og stoffet var utdatert). Ryddet opp generelt. wikitext text/x-wiki = Setup of connection to mikroservers= This setup process will allow you to connect to the mikroservers with one command without typing any password or host-names. There are 4 mikroservers at IFT, mikroserver1 through mikroserver4. == SSH key == To login to the server without having to type in your password every time, we can use SSH key pairs. The public key is stored on the server, and you have your private key stored on the UiB login server. To generate a key, type into the terminal ssh-keygen This will generate the files id_rsa and id_rsa.pub in the folder ~/.ssh, where the latter is the public key that needs to be stored on the server. Copy the key with your identity to either mikroserver (mikroserver3 is chosen in this example, but since the user environment is shared for each server, this will give you access to all the servers). You can do this manually, but the easiest way is to use the ssh-copy-id utility. NB: Replace USERNAME with your username ssh-copy-id USERNAME@mikroserver3.ift.uib.no You will be prompted your password. After the key is copied, you should be able to login with "ssh USERNAME@mikroserver3.ift.uib.no" without having to enter your password. == Connection aliases == Now that you can login without typing your password, it is also convenient to set up host names for the servers to connect quicker. To do this, type "gedit ~/.ssh/config" in the terminal. This will open up an empty file, and here you can store short names and specific SSH settings for the connection, such as your username. Host mikroserver3 HostName mikroserver3.ift.uib.no User USERNAME Port 22 ForwardX11 yes ForwardX11Trusted yes Copy and repeat this for each server in the same file, remembering to change the hostname to the corresponding mikroserver for each entry. ForwardX11 allows you to launch software on the server itself, while displaying the GUI remotely to the lab PC. After saving the file, you should be able to simply write "ssh mikroserver3" in the terminal to login to mikroserver3. Note: If you are attempting to do this step remotely from the UiB login server you need to use a terminal-based editor like Vim, or connect to the login-server with ssh -Y USERNAME@login.uib.no to enable the use of graphical editors such as gedit. == Automatic sourcing == There are two main files of sourcing scripts in a Linux environment. One is the file .bashrc, and the other is the file .profile. The difference in these is that the contents of .profile is executed upon login, and .bashrc is executed every time you access the terminal. .bashrc is not sourced to the system by itself upon login, so we need to source .bashrc in .profile manually to use it. This must be done after connecting to one of the mikroservers. echo "source ~/.bashrc" >> ~./profile Scripts can be sourced either within .profile or .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually every time. == Accessing the lab software remotely on your private PC == You do not need to set up a VPN to access the lab software from home. By connecting to the mikroservers through the UiB loginserver with X11 forwarding enabled, you can run the software from any network. You can do this directly on Linux/macOS by using SSH in the bash terminal. For Windows, you will need to download the TTY software [https://www.putty.org/ PuTTY] to enable X11 forwarding. === Linux/macOS === The process is the same for both Linux and macOS, except that for macOS you first have to install the X11 server software named XQuartz. Then, simply connect to the login server by typing ssh -Y USERNAME@login.uib.no The -Y enables trusted X11 forwarding. From here, you can "ssh mikroserver3" just as you would from the lab PC and run software. The steps described above (SSH keys and config files) can be repeated on your personal Linux/macOS PC to simplify connecting to the UiB loginserver. On Linux, the configuration file is located in "~/.ssh/config" just as on the server, while on macOS it is located in "/private/etc/ssh/ssh_config". === Windows === == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/USERNAME/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:path/to/folder/to/copy/to * this will copy the file to your home folder on any UiB machine * To copy a folder scp -r NameOfFolder USERNAME@login.uib.no:path/to/folder/to/copy/to == Troubleshooting == * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB loginserver or run the commands via the computers in the lab to be able to connect to the mikroservers * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "abc0123" [[Category:Mikroelektronikk]] e9c9f017e806d321dd5205519b4fed5b7ce0b810 2756 2754 2020-05-02T14:30:17Z Bhu006 102 wikitext text/x-wiki = Setup of connection to mikroservers= This setup process will allow you to connect to the mikroservers with one command without typing any password or host-names. There are 4 mikroservers at IFT, mikroserver1 through mikroserver4. == SSH key == To login to the server without having to type in your password every time, we can use SSH key pairs. The public key is stored on the server, and you have your private key stored on the UiB login server. To generate a key, type into the terminal ssh-keygen This will generate the files id_rsa and id_rsa.pub in the folder ~/.ssh, where the latter is the public key that needs to be stored on the server. Copy the key with your identity to either mikroserver (mikroserver3 is chosen in this example, but since the user environment is shared for each server, this will give you access to all the servers). You can do this manually, but the easiest way is to use the ssh-copy-id utility. NB: Replace USERNAME with your username ssh-copy-id USERNAME@mikroserver3.ift.uib.no You will be prompted your password. After the key is copied, you should be able to login with "ssh USERNAME@mikroserver3.ift.uib.no" without having to enter your password. == Connection aliases == Now that you can login without typing your password, it is also convenient to set up host names for the servers to connect quicker. To do this, type "gedit ~/.ssh/config" in the terminal. This will open up an empty file, and here you can store short names and specific SSH settings for the connection, such as your username. Host mikroserver3 HostName mikroserver3.ift.uib.no User USERNAME Port 22 ForwardX11 yes ForwardX11Trusted yes Copy and repeat this for each server in the same file, remembering to change the hostname to the corresponding mikroserver for each entry. ForwardX11 allows you to launch software on the server itself, while displaying the GUI remotely to the lab PC. After saving the file, you should be able to simply write "ssh mikroserver3" in the terminal to login to mikroserver3. Note: If you are attempting to do this step remotely from the UiB login server you need to use a terminal-based editor like Vim, or connect to the login-server with ssh -Y USERNAME@login.uib.no to enable the use of graphical editors such as gedit. == Automatic sourcing == There are two main files of sourcing scripts in a Linux environment. One is the file .bashrc, and the other is the file .profile. The difference in these is that the contents of .profile is executed upon login, and .bashrc is executed every time you access the terminal. .bashrc is not sourced to the system by itself upon login, so we need to source .bashrc in .profile manually to use it. This must be done after connecting to one of the mikroservers. echo "source ~/.bashrc" >> ~/.profile Scripts can be sourced either within .profile or .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually every time. == Accessing the lab software remotely on your private PC == You do not need to set up a VPN to access the lab software from home. By connecting to the mikroservers through the UiB loginserver with X11 forwarding enabled, you can run the software from any network. You can do this directly on Linux/macOS by using SSH in the bash terminal. For Windows, you will need to download the TTY software [https://www.putty.org/ PuTTY] to enable X11 forwarding. === Linux/macOS === The process is the same for both Linux and macOS, except that for macOS you first have to install the X11 server software named XQuartz. Then, simply connect to the login server by typing ssh -Y USERNAME@login.uib.no The -Y enables trusted X11 forwarding. From here, you can "ssh mikroserver3" just as you would from the lab PC and run software. The steps described above (SSH keys and config files) can be repeated on your personal Linux/macOS PC to simplify connecting to the UiB loginserver. On Linux, the configuration file is located in "~/.ssh/config" just as on the server, while on macOS it is located in "/private/etc/ssh/ssh_config". === Windows === == Add mikroserver as a folder on your pc == Open up your home folder in linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/USERNAME/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:path/to/folder/to/copy/to * this will copy the file to your home folder on any UiB machine * To copy a folder scp -r NameOfFolder USERNAME@login.uib.no:path/to/folder/to/copy/to == Troubleshooting == * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB loginserver or run the commands via the computers in the lab to be able to connect to the mikroservers * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "abc0123" [[Category:Mikroelektronikk]] 3f09b18943be632585aa0ce4596da4998ef79f55 2759 2756 2020-05-03T12:44:05Z Bhu006 102 Included Windows X11 forwarding wikitext text/x-wiki = Setup of connection to mikroservers= This setup process will allow you to connect to the mikroservers with one command without typing any password or long host names. There are 4 mikroservers at IFT, mikroserver1 through mikroserver4. == SSH key == To login to the server without having to type in your password every time, we can use SSH key pairs. The public key is stored on the server, and you have your private key stored on the UiB login server. To generate a key, type into the terminal ssh-keygen This will generate the files id_rsa and id_rsa.pub in the folder ~/.ssh, where the latter is the public key that needs to be stored on the server. Copy the key with your identity to either mikroserver (mikroserver3 is chosen in this example, but since the user environment is shared for each server, this will give you access to all the servers). You can do this manually, but the easiest way is to use the ssh-copy-id utility. NB: Replace USERNAME with your username ssh-copy-id USERNAME@mikroserver3.ift.uib.no You will be prompted your password. After the key is copied, you should be able to login with "ssh USERNAME@mikroserver3.ift.uib.no" without having to enter your password. == Connection aliases == Now that you can login without typing your password, it is also convenient to set up aliases for the servers to connect quicker. To do this, type "gedit ~/.ssh/config" in the terminal. This will open up an empty file, and here you can store shorthand names and specific SSH settings for the connection, such as your username. Host mikroserver3 HostName mikroserver3.ift.uib.no User USERNAME Port 22 ForwardX11 yes ForwardX11Trusted yes Copy and repeat this for each server in the same file, remembering to change the hostname to the corresponding mikroserver for each entry. ForwardX11 allows you to launch software on the server itself, while displaying the GUI remotely to the lab PC. After saving the file, you should be able to simply write "ssh mikroserver3" in the terminal to login to mikroserver3. Note: If you are attempting to do this step remotely from the UiB login server you need to use a terminal-based editor like Vim, or connect to the login-server with ssh -Y USERNAME@login.uib.no to enable the use of graphical editors such as gedit. == Automatic sourcing == There are two main files of sourcing scripts in a Linux environment. One is the file .bashrc, and the other is the file .profile. The difference in these is that the contents of .profile is executed upon login, and .bashrc is executed every time you access the terminal. .bashrc is not sourced to the system by itself upon login, so we need to source .bashrc in .profile manually to use it. This must be done after connecting to one of the mikroservers. echo "source ~/.bashrc" >> ~/.profile Scripts can be sourced either within .profile or .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually every time. == Accessing the lab software remotely on your private PC == You do not need to set up a VPN to access the lab software from home. By connecting to the mikroservers through the UiB loginserver with X11 forwarding enabled, you can run the software from any network. You can do this directly on Linux/macOS by using SSH in the bash terminal. For Windows, you will need to download the X server software [https://sourceforge.net/projects/xming/ Xming] to enable X11 forwarding. This install comes with PuTTY, an SSH client we will use to connect to the Linux based UiB server. === Linux/macOS === The process is the same for both Linux and macOS, except that for macOS you first have to install the X11 server software named [https://www.xquartz.org/ XQuartz]. Then, simply connect to the login server by typing ssh -Y USERNAME@login.uib.no The -Y enables trusted X11 forwarding. From here, you can "ssh mikroserver3" just as you would from the lab PC and run software. The steps described above (SSH keys and config files) can be repeated on your personal Linux/macOS PC to simplify connecting to the UiB loginserver. On Linux, the configuration file is located in "~/.ssh/config" just as on the server, while on macOS it is located in "/private/etc/ssh/ssh_config". === Windows === Install Xming and make sure you include PuTTY in the install. Run Xming. It will start minimized, and does not require any setup. When first opening PuTTY, you will be presented with this configuration menu. Fill in the hostname "login.uib.no", but don't connect yet. [[File:Puttylogin.png]] Navigate to Connection -> SSH -> X11, and check Enable X11 forwarding, and type in "localhost:0.0" as X display location. [[File:Puttyx11.png]] Return to Session, and make sure connection type is set to SSH. Press "Default Settings" and Save to save this configuration for later. Press Open to connect to the server. Enter your username and password, and now you should be in the Linux terminal for the UiB login server. Try to run "gedit" to confirm that you can run a graphical interface. From here you can ssh to the mikroservers and launch software as on the lab computer. Confirm by running gedit on the mikroserver as well to see that you can tunnel X11 through the login server correctly. == Add mikroserver as a folder on your pc == Open up your home folder in Linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: sftp://mikroserver3/home/USERNAME to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver3"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver (ssh mikroserver3) * locate the file you want to copy. i.e /home/USERNAME/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:path/to/folder/to/copy/to * this will copy the file to your home folder on any UiB machine * To copy a folder scp -r NameOfFolder USERNAME@login.uib.no:path/to/folder/to/copy/to == Troubleshooting == * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB loginserver or run the commands via the computers in the lab to be able to connect to the mikroservers * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "abc0123" [[Category:Mikroelektronikk]] 627cb714f9c299c5a721b44c25be166af25d050f Simulering av VHDL 0 34 2735 2398 2020-01-30T13:57:52Z Nfyku 4 /* Signaler og variable */ wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. ssh -X mikroserver3 # eller mikroserver2 source /eda/mentor/2016-17/scripts/QUESTA-CORE-PRIME_10.5c-4_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden under. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Simulere med optimaliseringsopsjon "-voptargs=+acc" for å kunne se variablene i wave-vinduet: vsim -voptargs=+acc sign_var Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. Hva er forskjellen som funksjon av tid/delta-tid? <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (CLK : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference p_test: process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process p_test; END architecture difference; </pre> 13b59f64718c217751e10f4a2de65937dc002c87 2736 2735 2020-01-30T13:59:14Z Nfyku 4 /* Signaler og variable */ wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. ssh -X mikroserver3 # eller mikroserver2 source /eda/mentor/2016-17/scripts/QUESTA-CORE-PRIME_10.5c-4_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden under. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Simulere med optimaliseringsopsjon "-voptargs=+acc" for å kunne se variablene i wave-vinduet: vsim -voptargs=+acc sign_var Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. Hva er forskjellen som funksjon av tid/delta-tid? <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (clk : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference p_test: process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process p_test; end architecture difference; </pre> 16b95958fe9e1eb2365af820ea623121762fc71d 2740 2736 2020-01-31T12:51:32Z Nfyku 4 /* Starte Questa Sim */ wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. ssh -X mikroserver3 # eller mikroserver2 source /eda/mentor/2018-19/scripts/QUESTA-CORE-PRIME_10.7c_RHELx86_64.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden under. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Simulere med optimaliseringsopsjon "-voptargs=+acc" for å kunne se variablene i wave-vinduet: vsim -voptargs=+acc sign_var Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. Hva er forskjellen som funksjon av tid/delta-tid? <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (clk : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference p_test: process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process p_test; end architecture difference; </pre> 39b0c1ac880de4fbb9e9cc4edf2f76e586d59ddc User:Bhu006 2 674 2737 2020-01-30T15:02:04Z Bhu006 102 Created blank page wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Synthese av VHDL 0 36 2738 2095 2020-01-30T15:13:38Z Bhu006 102 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte synteseprogrammet: source /eda/mentor/2018-19/scripts/PRECISION_2018.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone V med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: setenv QUARTUS_ROOTDIR /prog/altera/11.1/quartus ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: vmap cyclonev /prog/altera/vhdl_libs/cyclonev Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 6ed0c4f272130fdfd03f62304fb4390c1030f08a 2739 2738 2020-01-30T15:19:41Z Nfyku 4 /* Modelsim */ wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Pass på at lisensen for Quartus er korrekt satt opp, og at Precision finner Quartus. Precision bruker Quartus til å syntetisere vhdl-koden. For å starte synteseprogrammet: source /eda/mentor/2018-19/scripts/PRECISION_2018.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file(i dette tilfelle alu_example.vhdl). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Cyclone V med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: setenv QUARTUS_ROOTDIR /prog/altera/11.1/quartus ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(alu_example.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: vmap cyclonev /eda/altera/17.0/quartus/eda/sim_lib Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til alu_example.vhdl=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT (clk, rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector (3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in: std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF (clk'EVENT AND clk = '1') THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= "0000"; WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF (clk'EVENT AND clk = '1') THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm; </pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 4afa8169a453009b4f3a83c51f5577eaf27ecd42 VHDL Testbenk 0 35 2741 2507 2020-01-31T12:53:24Z Nfyku 4 /* Do-file og testbenk */ wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> ssh -X mikroserver3 source /eda/mentor/2018-19/scripts/QUESTA-CORE-PRIME_10.7c_RHELx86_64.sh </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim -voptargs=+acc SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscillasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> Om en legger til testbenk signalene i wave vinduet så får en opp markeringer der hvor det har oppstått feil, rød for error og gul for warning. En kan så trykke på markeringene og få opp feilmeldingen. ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. [[Category:VHDL]] [[Category:Mikroelektronikk]] 09c25143639b45c68f6592d670c6c4d600901d78 2742 2741 2020-01-31T12:54:01Z Nfyku 4 /* Do-file og testbenk */ wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : <pre> ssh -X mikroserver3 source /eda/mentor/2018-19/scripts/QUESTA-CORE-PRIME_10.7c_RHELx86_64.sh vsim </pre> ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim -voptargs=+acc SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscillasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> Om en legger til testbenk signalene i wave vinduet så får en opp markeringer der hvor det har oppstått feil, rød for error og gul for warning. En kan så trykke på markeringene og få opp feilmeldingen. ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. [[Category:VHDL]] [[Category:Mikroelektronikk]] 36a2fdecc24eece4e39f5261c262459d36a68678 PHYS222 0 202 2743 2708 2020-03-02T14:41:37Z Nfyku 4 /* Prosessteknologi */ wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [https://www.youtube.com/watch?v=Jctk0DI7YP8 Understanding The FinFet Semiconductor Process] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] e843e7686a7eff84c753e7566c061bfbcdaee62b 2744 2743 2020-03-02T14:45:39Z Nfyku 4 /* Prosessteknologi */ wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [https://www.youtube.com/watch?v=Jctk0DI7YP8 Understanding The FinFet Semiconductor Process] * [https://www.youtube.com/watch?v=W3rfVpkNquA Intel Ivy Bridge 22nm FinFET Process Fabrication] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] 8d589ba195f2b5984353e388812d204e2c4da9f8 2762 2744 2020-09-07T13:26:55Z Nfyku 4 /* Prosessteknologi */ wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [https://www.youtube.com/watch?v=Jctk0DI7YP8 Understanding The FinFet Semiconductor Process] * [https://youtu.be/MvbP_TizoNs Problems and Solutions at 7nm] * [https://www.youtube.com/watch?v=W3rfVpkNquA Intel Ivy Bridge 22nm FinFET Process Fabrication] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] 6293319f314d50b778db4e1f2623a27a1e5b467a 2763 2762 2020-09-07T13:33:13Z Nfyku 4 /* Prosessteknologi */ wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [https://www.youtube.com/watch?v=Jctk0DI7YP8 Understanding The FinFet Semiconductor Process] * [https://youtu.be/MvbP_TizoNs Problems and Solutions at 7nm] * [https://youtu.be/Qo2ywUURSKg A tour inside Intel Corporation's D1D factory] * [https://www.youtube.com/watch?v=W3rfVpkNquA Intel Ivy Bridge 22nm FinFET Process Fabrication] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] b2984106216e2df09bfbe2dae780dd04a27f8902 2764 2763 2020-09-07T13:37:04Z Nfyku 4 /* Prosessteknologi */ wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [https://www.youtube.com/watch?v=Jctk0DI7YP8 Understanding The FinFet Semiconductor Process] * [https://youtu.be/MvbP_TizoNs Problems and Solutions at 7nm] * [https://youtu.be/Qo2ywUURSKg A tour inside Intel Corporation's D1D factory] * [https://www.youtube.com/watch?v=W3rfVpkNquA Intel Ivy Bridge 22nm FinFET Process Fabrication] * [https://youtu.be/ApWOf6J858Y Integrated circuit scaling to 10 nm and beyond - Mark Bohr, Intel Senior Fellow] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] 597436770f86d41eb7d445d5916da4bf1c3ef693 PHYS321 0 278 2745 2669 2020-03-02T14:54:48Z Nfyku 4 /* Nettressurser */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Using Vivado ==== * [[Install Vivado 2015.4 with free license]] * [[VGA controller VHDL code]] * [[Nexys4_Master.xdc]] * [[Using the VGA controller with block ram generator and clock wizard]] === Gamle øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] d7fdfc1b813df65a21fd0935e113152f6fde68fb SSH tunnel 0 283 2748 1128 2020-03-30T08:21:14Z Nfyku 4 wikitext text/x-wiki ==VNC-SSH innlogging== ===Opprette SSH tunnel=== # Start opp SSH Secure Shell # Velg Profiles → Add Profile… gi den et navn f.eks. "mikroserver2 via login" # Velg Profiles → Edit Profiles…, velg mikroserver2 blant profiles i venstre felt. # Velg Tunneling tab # Velg Outgoing tab ## Klikk Add… ## Skriv inn et navn i Display Name feltet, f.eks. mikroserver2 ## Pass på at Type er TCP ## Skriv inn 5900 i feltet Listen Port ## Sjekk at Allow Local Connections Only er krysset av ## Skriv inn mikroserver2 i Destination Host (adressen til maskinen du kjører VNC server på. Bruk fullt navn om nødvendig: host.klientdrift.uib.no) ## Skriv inn summen av 5900 og ditt desktop nummer, eks 5906, i feltet Destination Port ## Klikk OK # Velg Conection tab ## Skriv inn login.uib.no i Host name feltet ## Skriv inn ditt unix-brukernavn i User name feltet ## Port number skal være 22 ## la resten være som det er. ## Klikk OK (ferdig med konfigurasjon) # Velg Profiles -> "mikroserver2 via login" # Tast inn ditt unix-bruker passord # Legg ned / minimize SSH vinduet, det kjører nå SSH tunnellen og må kjøre så lenge du bruke VNC Viewer via SSH. # Når du er ferdig og har avsluttet VNC Viewer, logger du først ut fra serveren med kommandoen logout og så lukker du SSH vinduet. ====Neste gang du skal opprette SSH tunnellen==== # Start SSH Secure Shell # Utfør punktene fra og med punkt 7 over. ===Login til VNC-SSH server=== Start først opp din egen VNC server som forklart i VNC innlogging mot egen server, eller bruk en eksisternde VNC server. Start VNC Viewer og skriv inn localhost (ikke :port) i Server feltet og click OK og tast inn ditt vnc passord. ===Logout fra egen VNC-SSH server=== Bruk samme fremgangsmåte som forklart under Metode 2 → Logout fra egen VNC server i VNC innlogging. ===Problemer?=== Om du får melding om at SSH tunnell ikke kunne opprettes, sjekk om du kjører VNC-server på din pc, den kan skape problemer. [[Category:Mikroelektronikk]] 51ca6ad0642cb07940f17b521a556f797009b2b0 Layout XL and IHP SG13S 0 546 2751 2701 2020-04-27T09:48:07Z Bhu006 102 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. The user guide "SG13_user_guide.pdf" can be also be found in the folder "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/doc/pdf" on the microserver. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:SG13 Design Kit User Guide.pdf]] [[File:SG13 Layout rules.pdf]] [[File:Documentation.png|200px]] If you're laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus QRC. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". The run the QRC. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. [[Category:Mikroelektronikk]] afee4592fb51aa38b2a0aa9d19a7c56bab8f4a54 2752 2751 2020-04-29T12:49:38Z Bhu006 102 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. The user guide "SG13_user_guide.pdf" can be also be found in the folder "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/doc/pdf" on the microserver. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:SG13 Design Kit User Guide.pdf]] [[File:SG13 Layout rules.pdf]] [[File:Documentation.png|200px]] If you're laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". Open the Extraction tab and set your ground net (gnd!) in the "Reference node" box. Then run the QRC by pressing OK. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. [[Category:Mikroelektronikk]] 715d975acd13e0418cf70518a588d400317508d7 2753 2752 2020-05-01T11:11:03Z Bhu006 102 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. The user guide "SG13_user_guide.pdf" can be also be found in the folder "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/doc/pdf" on the microserver. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:SG13 Design Kit User Guide.pdf]] [[File:SG13 Layout rules.pdf]] [[File:Documentation.png|200px]] If you're laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] Note that there is a specified minimum enclosure in the design rules for vias between polysilicon and metal. This is because during the manufacturing process, the polysilicon and metal layers are created separately and the alignment is not perfect, so the polysilicon connection must be slightly larger to accommodate the potential offset between these layers. Enclosures can be seen by the polysilicon squares on the vias connecting the Q and Q_B lines in the design above. To set a via enclosure size, right click the via and go to properties. On the bottom, there is a setting for GatPoly enclosure. You must set each direction separately. = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". Open the Extraction tab and set your ground net (gnd!) in the "Reference node" box. Then run the QRC by pressing OK. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. [[Category:Mikroelektronikk]] e0c86f0482a571d11bbad7b544af56ec277bdd52 2769 2753 2020-10-15T08:07:40Z Nfyku 4 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. The user guide "SG13_user_guide.pdf" can be also be found in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the microserver. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. [[File:SG13 Design Kit User Guide.pdf]] [[File:SG13 Layout rules.pdf]] [[File:Documentation.png|200px]] If you're laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] Note that there is a specified minimum enclosure in the design rules for vias between polysilicon and metal. This is because during the manufacturing process, the polysilicon and metal layers are created separately and the alignment is not perfect, so the polysilicon connection must be slightly larger to accommodate the potential offset between these layers. Enclosures can be seen by the polysilicon squares on the vias connecting the Q and Q_B lines in the design above. To set a via enclosure size, right click the via and go to properties. On the bottom, there is a setting for GatPoly enclosure. You must set each direction separately. = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". Open the Extraction tab and set your ground net (gnd!) in the "Reference node" box. Then run the QRC by pressing OK. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. [[Category:Mikroelektronikk]] c02cb9990b3bb657c94e0a1522b82540bcd91ffd 2771 2769 2020-10-15T09:19:12Z Nfyku 4 wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" If you're laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] Note that there is a specified minimum enclosure in the design rules for vias between polysilicon and metal. This is because during the manufacturing process, the polysilicon and metal layers are created separately and the alignment is not perfect, so the polysilicon connection must be slightly larger to accommodate the potential offset between these layers. Enclosures can be seen by the polysilicon squares on the vias connecting the Q and Q_B lines in the design above. To set a via enclosure size, right click the via and go to properties. On the bottom, there is a setting for GatPoly enclosure. You must set each direction separately. = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". Open the Extraction tab and set your ground net (gnd!) in the "Reference node" box. Then run the QRC by pressing OK. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. [[Category:Mikroelektronikk]] 899f274f6e9da6d84a3b9f2ec11dd262e0edc4c2 Microelectronics group 0 25 2755 2661 2020-05-02T14:26:50Z Bhu006 102 wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Xilinx === * [[Xilinx Vivado]] Tutorials for Xilinx Vivado * [[Xilinx SDK]] Tutorials for Xilinx Software Development Kit === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[FreeRTOS]] Free Real Time Operating System == Andre fagressurser og laboratorieveiledninger== * [[MikroserverSetup]] Oppsett av enkel tilkobling til mikroserverene * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] 417dc3b359ef9963d4ceab537e8242419b06fc04 2760 2755 2020-08-18T14:07:19Z Nfyku 4 wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Xilinx === * [[Xilinx Vivado]] Tutorials for Xilinx Vivado * [[Xilinx SDK]] Tutorials for Xilinx Software Development Kit === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[FreeRTOS]] Free Real Time Operating System == Andre fagressurser og laboratorieveiledninger== * [[MikroserverSetup]] Oppsett av enkel tilkobling til mikroserverene * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Populærvitenskaplig om elektronikk == * [https://youtu.be/NUUeGianTKM The Story of Electricity - BBC Documentary] == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] 78f49faf7e8a6fbc547ba84bca6c244185e080af 2761 2760 2020-08-18T14:11:34Z Nfyku 4 wikitext text/x-wiki == Øvinger og guider == === Mentor Graphics === * [[Expedition PCB]] Komme i gang med kretskortutlegg ved hjelp av Expedition PCB * [[Modelsim/Questa]] Skrive og simulere VHDL-kode med Mentor Graphics ModelSim === Cadence === * [[Cadence Virtuoso]] === Microsemi === * [[SmartFusion2- AMBA APB, Custom Peripheral]] Making a custom peripheral for the AMBA APB bus === Xilinx === * [[Xilinx Vivado]] Tutorials for Xilinx Vivado * [[Xilinx SDK]] Tutorials for Xilinx Software Development Kit === Annet === * [[Bitvis UVVM VHDL Verification Component Framework]] * [[Tutorials]] Tutorials from the web * [[XJTAG]]  Boundary Scan with XJTAG * [[XJDeveloper]] Innføring i XJDeveloper * [[FreeRTOS]] Free Real Time Operating System == Andre fagressurser og laboratorieveiledninger== * [[MikroserverSetup]] Oppsett av enkel tilkobling til mikroserverene * [[PHYS222]] Fagressurser for PHYS222 og PHYS223 * [[PHYS321]] Fagressurser for PHYS321 * [[Teknisk hjelp]] Teknisk hjelp for bruk av DAK-programvare * [[BGA lodding]] bruk av Martin 09.6 XL BGA lodding maskin (intern) * [[Reflow Soldering]] Use of Technoprint HA-02 reflow oven == Populærvitenskaplig om elektronikk == * [https://youtu.be/NUUeGianTKM The Story of Electricity - BBC Documentary] * [https://www.youtube.com/watch?v=U4XknGqr3Bo Transiztorized! ] == Eldre øvinger og guider == === Mentor Graphics === * [[IC studio]] Veiledning til IC-design ved hjelp av IC studio * [[IC studio - SPICE/Symbol Tutorial]] Relate a SPICE file to a Symbol * [[IC Station]] Tegne utlegg for integrerte kretser === Annet === * [[PCI-eksperiment]] Øving med HLT-RORC-prototypekort * [[Xilinx]] Øving i bruk av Xilinx Project Studio * [[SmartFusion2]] Oppsett og design med SF2 * [[FLTK GUI]] Graphical User Interface using FLTK [[Category:Mikroelektronikk]] fd928e9ce7c3e52dc2ce84cbeaee7691e345d237 File:Puttylogin.png 6 677 2757 2020-05-03T12:22:44Z Bhu006 102 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 File:Puttyx11.png 6 678 2758 2020-05-03T12:22:52Z Bhu006 102 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Symbolsk løsning av nodeligninger med Matlab 0 217 2765 2334 2020-09-23T11:02:34Z Nfyku 4 Updated for newer Matalb versions (tested on R2020b) wikitext text/x-wiki === Using Kirchoff's current law (KCL) on a source follower configuration to find Vout as a function of Vin === <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vo as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland syms s C Vin Vo Vgs Zc gm Rl Rs R Av Avo eq1=(Vo-Vgs)/(R+Zc)+gm*Vgs+Vo/Rl == 0; eq2=(Vgs-Vo)/(R+Zc)+(Vgs-Vin)/Rs == 0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('KCL for circuit node 1:'); pretty(eq1); disp('KCL for circuit node 2:'); pretty(eq2); disp('Solve for Vo and Vin and calculate Av (Vo/Vin):'); solved=solve(eq1,eq2,Vo,Vin); Av=solved.Vo/solved.Vin; pretty(simplify(Av)); pretty(subs(Av,Rl*gm,Avo)); </pre> === Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 to find Vo as a function of Is === <pre> % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2015 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; %% With feedforward capacitor eq1=sym('(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/Zc+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=subs(eq1,V1,solV1); SolVo=simplify(solve(eq3,[Vo])); disp('With capacitor only in feedforward loop'); pretty(simplify(SolVo/Is)); %% With series resistor and capacitor in feedforward loop eq1=sym('(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2=0'); eq2=sym('(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is=0'); eq1=subs(eq1,Zc,'1/(s*C)'); eq2=subs(eq2,Zc,'1/(s*C)'); solV1=solve(eq2,V1); eq3=simplify(subs(eq1,V1,solV1)); SolVo=solve(eq3,[Vo]); disp('With series resistor and capacitor in feedforward loop'); pretty(simplify(SolVo/Is)); </pre> 8ce3c9f3b005d733aadb9b03bc1f4ceccd909c4d 2766 2765 2020-09-23T11:13:48Z Nfyku 4 wikitext text/x-wiki === Using Kirchoff's current law (KCL) on a source follower configuration to find Vout as a function of Vin === <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vo as a function of Vin % Only Cgd is considered (Zc) % Kjetil Ullaland syms s C Vin Vo Vgs Zc gm Rl Rs R Av Avo eq1=(Vo-Vgs)/(R+Zc)+gm*Vgs+Vo/Rl == 0; eq2=(Vgs-Vo)/(R+Zc)+(Vgs-Vin)/Rs == 0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('KCL for circuit node 1:'); pretty(eq1); disp('KCL for circuit node 2:'); pretty(eq2); disp('Solve for Vo and Vin and calculate Av (Vo/Vin):'); solved=solve(eq1,eq2,Vo,Vin); Av=solved.Vo/solved.Vin; pretty(simplify(Av)); pretty(subs(Av,Rl*gm,Avo)); </pre> === Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 to find Vo as a function of Is === <pre> % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2020 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; %% With feedforward capacitor eq1=(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2==0; eq2=(V1-Vo)/Zc+V1*s*C1+V1/R1+Is==0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('Solve for Vo and V1 and calculate Vo/Is with capacitor only in feedforward loop'); solved=solve(eq1,eq2,Vo,Is); VoOnIs=solved.Vo/solved.Is; pretty(simplify(VoOnIs)); %% With series resistor and capacitor in feedforward loop eq1=(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2==0; eq2=(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is==0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('Solve for Vo and V1 and calculate Vo/Is with resistor and capacitor in feedforward loop'); solved=solve(eq1,eq2,Vo,Is); VoOnIs=solved.Vo/solved.Is; pretty(simplify(VoOnIs)); </pre> fbb47afba3c460ba26ee4e4fb59257ecd51b73ee 2767 2766 2020-09-23T11:39:47Z Nfyku 4 Added calculation for all capacitors wikitext text/x-wiki === Using Kirchoff's current law (KCL) on a source follower configuration to find Vout as a function of Vin === <pre> % Using Kirchoff's current law (KCL) on a source follower configuration % to find Vo as a function of Vin % Kjetil Ullaland, 2020 syms s Cdg Cgs Cds Vin Vo Vgs Zc gm Rl Rs R Av Avo %% disp('Only Cgd with series resistor is considered (Zc)') eq1=(Vo-Vgs)/(R+Zc)+gm*Vgs+Vo/Rl == 0; eq2=(Vgs-Vo)/(R+Zc)+(Vgs-Vin)/Rs == 0; eq1=subs(eq1,Zc,1/(s*Cdg)); eq2=subs(eq2,Zc,1/(s*Cdg)); disp('KCL for circuit node 1:'); pretty(eq1); disp('KCL for circuit node 2:'); pretty(eq2); disp('Solve for Vo and Vin and calculate Av (Vo/Vin):'); solved=solve(eq1,eq2,Vo,Vin); Av=solved.Vo/solved.Vin; pretty(simplify(Av)); pretty(subs(Av,Rl*gm,Avo)); %% disp('All MOST capasitors are considered') syms s Cdg Cgs Cds Vin Vo Vgs gm Rl Rs Av Avo eq1=(Vo-Vgs)*s*Cdg + gm*Vgs + Vo/Rl + Vo*s*Cds == 0; eq2=(Vgs-Vin)/Rs + Vgs*s*Cgs + (Vgs-Vo)*s*Cdg == 0; disp('KCL for circuit node 1:'); pretty(eq1); disp('KCL for circuit node 2:'); pretty(eq2); disp('Solve for Vo and Vin and calculate Av (Vo/Vin):'); solved=solve(eq1,eq2,Vo,Vin); Av=solved.Vo/solved.Vin; pretty(simplify(Av)); pretty(subs(Av,Rl*gm,Avo)); </pre> === Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 to find Vo as a function of Is === <pre> % Using Kirchoff's current law (KCL) on single transistor stage, fig. 9.18 % to find Vo as a function of Is % Kjetil Ullaland, 2020 syms Vo V1 s gm R1 R2 C C1 C2 Is Zc Rz; %% With feedforward capacitor eq1=(Vo-V1)/Zc+gm*V1+Vo/R2+Vo*s*C2==0; eq2=(V1-Vo)/Zc+V1*s*C1+V1/R1+Is==0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('Solve for Vo and V1 and calculate Vo/Is with capacitor only in feedforward loop'); solved=solve(eq1,eq2,Vo,Is); VoOnIs=solved.Vo/solved.Is; pretty(simplify(VoOnIs)); %% With series resistor and capacitor in feedforward loop eq1=(Vo-V1)/(Zc+Rz)+gm*V1+Vo/R2+Vo*s*C2==0; eq2=(V1-Vo)/(Zc+Rz)+V1*s*C1+V1/R1+Is==0; eq1=subs(eq1,Zc,1/(s*C)); eq2=subs(eq2,Zc,1/(s*C)); disp('Solve for Vo and V1 and calculate Vo/Is with resistor and capacitor in feedforward loop'); solved=solve(eq1,eq2,Vo,Is); VoOnIs=solved.Vo/solved.Is; pretty(simplify(VoOnIs)); </pre> 13d444112847817b98634c38e4df375714958f2e IHP 130nm process 0 472 2772 2770 2020-10-15T09:20:58Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver: ssh -X mikroserver4 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2019-20/scripts/analog.sh cd ~/ihp/cds/ source /eda/design_kits/ihp_sg13/sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] = Before starting layout = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Make sure that your web browser is closed or started from the mikroserver, else the file will not be found. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] 0c9e6adccfdb0a73072ff441e31be1745f8dc6f7 2773 2772 2020-10-15T11:30:42Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver: ssh -X mikroserver4 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2019-20/scripts/analog.sh cd ~/ihp/cds/ source /eda/design_kits/ihp_sg13/sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] = Before starting designing = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Make sure that your web browser is closed or started from the mikroserver, else the file will not be found. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] d73f2c8f3e95b2785e2e4759eba7fa91ffbef3a3 Main Page 0 1 2774 2400 2020-11-03T23:28:38Z Nfyal 26 need this wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[DAMARA]] * [[Detector lab]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [http://wiki.uib.no/nanolab Nano Lab] * [[Particle Physics group]] * [[GRIEG project "EarlyUniverse"]] * [[Strålevern]] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 2884e13c9f7bde42673aac188f34fc18efaf82d4 2799 2774 2020-11-25T14:41:40Z Nfyal 26 wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[DAMARA]] * [[Detector lab]] * [[Cerenkov Telescope Array -Norway]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [http://wiki.uib.no/nanolab Nano Lab] * [[Particle Physics group]] * [[GRIEG project "EarlyUniverse"]] * [[Strålevern]] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 4edb618dd513d40126950a0e23ed83fb3cde4e22 GRIEG project "EarlyUniverse" 0 679 2775 2020-11-03T23:32:04Z Nfyal 26 Created page with "[[Media:grieg-logo.png]]" wikitext text/x-wiki [[Media:grieg-logo.png]] 8163af9ec00b56f910199bead7dfdf08c853f296 2777 2775 2020-11-03T23:34:34Z Nfyal 26 wikitext text/x-wiki [[Media:grieg-logo.png]] [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] b0ab2c78b9814687c087134978f454c044e8ca39 2778 2777 2020-11-03T23:42:42Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [[Image:grieg-logo.png]] [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] Wiki page for "EarlyUniverse project, with participants from Bergen Highe Energy Physics Group, and Particle Theory, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka and she will figure out who can activate your account, === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === 3f7f567967c0050deb85363faad5b9e5a82b3d4a 2780 2778 2020-11-03T23:55:30Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [[Image:grieg-logo.png]] [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] Wiki page for "EarlyUniverse project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka and she will figure out who can activate your account, === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === 7aaf655273d36b06bb9b0964972b27db79a8f592 2781 2780 2020-11-03T23:56:19Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [[Image:grieg-logo.png]] [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka and she will figure out who can activate your account, === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === f84c4fc409f982b9832b426816176ec8e0bda15c 2782 2781 2020-11-04T00:10:39Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] [[Image:grieg-logo.png]] Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === a182d881af73fd5a47485206e835aa65ced6d165 2783 2782 2020-11-04T00:11:45Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] This is Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === [[Image:grieg-logo.png]] 61566e36511693f39dd2c2463b15a734b6713e29 2784 2783 2020-11-10T14:01:43Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] This is Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === Bergen particle physics group twiki: [[https://wiki.uib.no/ift/index.php/Particle_Physics_group Bergen particle physics]] [[Image:grieg-logo.png]] d8bceeafef0db9f1ea64a22401230b445baeb367 2788 2784 2020-11-10T14:11:38Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] This is Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === === [[PublicationsOfInterests| Presentations of Interest]] === Bergen particle physics group twiki: [[https://wiki.uib.no/ift/index.php/Particle_Physics_group Bergen particle physics]] [[Image:grieg-logo.png]] 2317cf161e2a28276760c4195c0dc544ae1ebb9d 2803 2788 2021-02-03T22:28:05Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] The project is financed by Norwegian Financial Mechanism, with the latest possible use of funds in 31 of March 2024. This is Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === === [[PublicationsOfInterests| Presentations of Interest]] === Bergen particle physics group twiki: [[https://wiki.uib.no/ift/index.php/Particle_Physics_group Bergen particle physics]] [[Image:grieg-logo.png]] 4b2c3fbf9fe4b2bd412bc7e8456fe7f40114e3a2 2804 2803 2021-02-03T22:35:24Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] The project is financed by Norwegian Financial Mechanism, with the latest possible use of funds in 31 of March 2024. This is Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. === [[EarlyUniverseProjectShared|Sharing Ideas]] === === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === === [[PublicationsOfInterests| Presentations of Interest]] === Bergen particle physics group twiki: [[https://wiki.uib.no/ift/index.php/Particle_Physics_group Bergen particle physics]] [[Image:grieg-logo.png]] fc65e4ee76fb5f290442da8532537253ba1ee0d5 File:Grieg-logo.png 6 680 2776 2020-11-03T23:32:30Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 EarlyUniverseProjectMeetings 0 681 2779 2020-11-03T23:53:03Z Nfyal 26 Created page with "== Seminar and meeting information == The project meetings and task meetings (tasks 1 to 5) can be found in the following CERN indico category. https://indico.cern.ch/cate..." wikitext text/x-wiki == Seminar and meeting information == The project meetings and task meetings (tasks 1 to 5) can be found in the following CERN indico category. https://indico.cern.ch/category/8493/ They are clearly marked "GRIEG Early Universe" so you should be able to find them out. We have an ongoing zoom meeting: https://uib.zoom.us/j/68546966413?pwd=NXBVTDhiRTJWSkJEYmVDWVNyRUxHQT09 a673e2fe69170207d02d3ea5e09fe8643d210b89 ParticlePhysicsGroupMeetings 0 139 2785 2544 2020-11-10T14:03:50Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 9:30, on vidyo, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics). This includes 2016-2017 Bergen-Oslo meetings. https://indico.cern.ch/category/7495/ Grieg project meetings, UiB+UW are here: https://wiki.uib.no/ift/index.php/EarlyUniverseProjectMeetings Old and not updated Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here (I still keep it for a while): https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2018 === "Spatind conference", Nordic Bi-annual conference in High Energy Physics, 2-8 January 2018 [https://indico.cern.ch/event/666278/ web page] Please register ASAP. you are (most probably) funded by the HEPP project. * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] e339ab1a6ae6233bf8b37bff706bd341e4708410 Particle Physics group 0 137 2786 2564 2020-11-10T14:06:48Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report (not the final version alas) from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] a0ff60b4fac1f4ce710fb988531698a310697aee 2787 2786 2020-11-10T14:09:16Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report (not the final version alas) from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== we filled two postdoc positions in 2013, and PhD theory position in 2015, PhD in ATLAS in 2016. We will have more openings coming years. all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 2dc6f3fe8c3eed1f7c3f1caf526ea46648ac1323 PublicationsOfInterests 0 682 2789 2020-11-10T14:14:00Z Nfyal 26 Created page with "Report from Higgs2020 conference [[Media:higgs2020.pdf]]" wikitext text/x-wiki Report from Higgs2020 conference [[Media:higgs2020.pdf]] a78687ecf831caa6193f869ffa85f496679e99c3 File:Higgs2020.pdf 6 683 2790 2020-11-10T14:15:10Z Nfyal 26 summary of higgs2020 conference, Valerio Dao wikitext text/x-wiki summary of higgs2020 conference, Valerio Dao ce5009e93e0b18df61f5eae30f095c8f3bd582fa ift:Administrators 4 684 2791 2020-11-10T14:25:43Z Nfyal 26 Created page with "Nfyal" wikitext text/x-wiki Nfyal 0ce11b293ba0de5beefd8c8b566409b20d7700d7 2793 2791 2020-11-10T14:29:25Z Nfyal 26 wikitext text/x-wiki Nfyal Nfyst b802a272f9ff6f611ed6a539bb7daf5f84113d57 2794 2793 2020-11-10T14:31:04Z Nfyal 26 wikitext text/x-wiki [Nfyal] [Nfyst] [] ebb4908607eea3247c58fbabdf605ecb721618c6 2795 2794 2020-11-10T14:31:38Z Nfyal 26 wikitext text/x-wiki [[Nfyal]] [[Nfyst]] [] f8f0e104dd612a9acdc138c6bdba184986b13e4d 2796 2795 2020-11-10T14:32:13Z Nfyal 26 wikitext text/x-wiki [Nfyal] [Nfyst] [] 5ca7c744213a72c022db5338a0c3531996de8f02 2797 2796 2020-11-10T14:33:40Z Nfyal 26 wikitext text/x-wiki [User:Nfyal] [User:Nfyst] [User:Nfo058] 7bcf6263562363732ce69d0c9f4cb1276c8c964f 2798 2797 2020-11-10T14:34:15Z Nfyal 26 wikitext text/x-wiki User:Nfyal User:Nfyst User:Nfo058 61bafb8cd3ee45734438153f17d0f8e9460b3b5f ift:Autoconfirmed users 4 685 2792 2020-11-10T14:26:22Z Nfyal 26 Created page with "Nfyal" wikitext text/x-wiki Nfyal 0ce11b293ba0de5beefd8c8b566409b20d7700d7 Cerenkov Telescope Array -Norway 0 686 2800 2020-11-25T14:44:58Z Nfyal 26 Created page with "This is Wiki page for Cerenkov Telescope Array-Norway, with participants from Bergen High Energy Physics Group, Astroparticle Physics at NTNU, and Department of Physics at t..." wikitext text/x-wiki This is Wiki page for Cerenkov Telescope Array-Norway, with participants from Bergen High Energy Physics Group, Astroparticle Physics at NTNU, and Department of Physics at the University of Oslo. People: 13a266210580b1a622f6aeffff14ae217f5ab7a5 ATLASThesesNotes 0 234 2801 2704 2020-12-11T14:14:40Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 803594e4b4c81447838022d30e5beccc21bdc714 File:Nikolai-thesis-final.pdf 6 687 2802 2020-12-11T14:15:12Z Nfyal 26 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 EarlyUniverseProjectShared 0 688 2805 2021-02-03T23:01:47Z Nfyal 26 Created page with "We need perhaps to get SLACK exchange, but at the moment we just wanted a googledoc to get common publications ideas. For now there is a googledoc here: https://docs.google.c..." wikitext text/x-wiki We need perhaps to get SLACK exchange, but at the moment we just wanted a googledoc to get common publications ideas. For now there is a googledoc here: https://docs.google.com/document/d/1wI4SBN6AphG6tJvNfGKKb01bpejK--4kzkP9RY4Awfw/ 487f911a44c0e9d7379a53cfebabc41d357d0537 Synthese av VHDL 0 36 2806 2739 2021-02-04T12:52:47Z Nfyku 4 Updated to Vivado wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver;2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Vel deretter New Project, og deretter Add input file(i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. Hvis du får en "ROOTDIR"-error, mangler det en variabel. Skriv følgende i terminalen: setenv QUARTUS_ROOTDIR /prog/altera/11.1/quartus ==Modelsim== Start opp Modelsim, lag nytt prosjekt og legg til vhdl fila(add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /prog/altera/vhdl_libs. Du kan "mappe" disse for eksempel slik: vmap cyclonev /eda/altera/17.0/quartus/eda/sim_lib Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksemple på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] b35a0734bd54fe6589c433253c569722bf61e836 2807 2806 2021-02-04T13:37:06Z Nfyku 4 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver;2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Vel deretter New Project, og deretter Add input file(i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila(add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Quartus med menyen Tools > Launch EDA Simulation Simulation Library Compiler. Vi har kompilert disse bibliotekene til mappen /eda/xilinx. Du kan "mappe" disse for eksempel slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] ae1d0f604fc38afd0088b04fb06f2e44d962a369 2808 2807 2021-02-04T13:39:37Z Nfyku 4 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver;2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Vel deretter New Project, og deretter Add input file(i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila(add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] cf526d48fd1255263f913e079e3db50892b453b9 2809 2808 2021-02-04T13:46:34Z Nfyku 4 /* Precision */ wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver;2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file(i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic(syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila(add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda(sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 3194fd9453ff5d0a1b262c71b432a1ec28542d46 2810 2809 2021-02-04T13:48:16Z Nfyku 4 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver;2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file (i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic (syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila (add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Modelsim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den synthesisere komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda (sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 512ee8e2dfb2ff459c3832a02cdf190c4865c21d 2812 2810 2021-02-04T21:05:20Z Nfyku 4 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver;2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file (i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic (syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila (add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Questasim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den syntesiserte komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda (sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] fbcb137707b0a3f46a2edce0d3dfdeddc360d9a0 2817 2812 2021-02-05T08:05:35Z Nfyku 4 /* Precision */ wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver:2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file (i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic (syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila (add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Questasim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den syntesiserte komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda (sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk, reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end; </pre> [[Category:Mikroelektronikk]] 2066e6d3c6fdf154f1fa3efd793c6d4516a4c887 2818 2817 2021-02-05T12:10:31Z Nfyku 4 /* Koden til alu_tb.vhdl */ wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver:2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file (i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic (syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila (add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps alu_tb -sdfmax :alu_tb:ali=/heim/yngve/vhdl/syntese/alu_temp_1/simulation/modelsim/add_sub_alu_vhd.sdo Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Questasim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den syntesiserte komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda (sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk : std_logic; signal reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end architecture struct; </pre> [[Category:Mikroelektronikk]] ea8aaf101a256c12f3be1b2a5dabed22b7439d2d 2819 2818 2021-02-05T13:44:45Z Nfyku 4 oppdatert sdf-inkludering med sdfnoerror wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver:2100@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh precision Vel deretter New Project, og deretter Add input file (i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic (syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila (add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps -sdfnoerror -sdfmax /alu_synth=/home/kaf003/VHDL_Prosjekter/PHYS321/vivado_impl_1/add_sub_alu_synth.sdf work.alu_tb Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Questasim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den syntesiserte komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda (sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk : std_logic; signal reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end architecture struct; </pre> [[Category:Mikroelektronikk]] f3427a132aea2910060b03c6692e967202fb2bad Modelsim/Questa 0 33 2811 2729 2021-02-04T21:02:47Z Nfyku 4 wikitext text/x-wiki [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] <!-- [http://www.ashenden.com.au/ Ashenden Designs] dead link --> [http://freerangefactory.org/books_tuts.html Free Range VHDL textbook] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] [http://www.ioenotes.edu.np/media/notes/embedded-system/vhdl.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [https://bitvis.no/dev-tools/uvvm/ Bitvis Universal VHDL Verification Methodology ] [[Category:Mikroelektronikk]] 9a1780dfc3eae9230116075487948c87a6b569a4 2816 2811 2021-02-04T21:13:27Z Nfyku 4 /* Referanselitteratur */ wikitext text/x-wiki [[Simulering av VHDL]] [[VHDL Testbenk]] [[Synthese av VHDL]] == Referanselitteratur == [http://en.wikipedia.org/wiki/VHDL Wikipedia:VHDL] [http://freerangefactory.org/books_tuts.html Free Range VHDL textbook] [http://esd.cs.ucr.edu/labs/tutorial/ VHDL Tutorial: Learn by Example] [http://www.ioenotes.edu.np/media/notes/embedded-system/vhdl.pdf VHDL Quick Start (slides by Ashenden)] [http://model.com/content/modelsim-pe-simulation-and-debug Modelsim] [http://m.eet.com/media/1151614/23798-46098.pdf 10 tips for generating reusable VHDL] [http://www.actel.com/documents/hdlcode_ug.pdf Actel HDL coding Style Guide] [http://www.seas.upenn.edu/~ese171/vhdl/vhdl_primer.html VHDL primer] [https://bitvis.no/dev-tools/uvvm/ Bitvis Universal VHDL Verification Methodology ] [https://github.com/UVVM Bitvis UVVM på GitHub ] [[Category:Mikroelektronikk]] cde12bb4e6d21cbb3ea8004fca22ff54d561bc63 Simulering av VHDL 0 34 2813 2740 2021-02-04T21:06:41Z Nfyku 4 /* Starte Questa Sim */ wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. ssh -X mikroserver4 export LM_LICENSE_FILE=1717@lisensserver source /eda/mentor/2019-20/scripts/PRECISION_2019.1.1_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden under. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Simulere med optimaliseringsopsjon "-voptargs=+acc" for å kunne se variablene i wave-vinduet: vsim -voptargs=+acc sign_var Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. Hva er forskjellen som funksjon av tid/delta-tid? <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (clk : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference p_test: process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process p_test; end architecture difference; </pre> fad112a06c06d20a8f6f7baeca7e4ad92434c588 VHDL Testbenk 0 35 2814 2742 2021-02-04T21:08:46Z Nfyku 4 wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : ssh -X mikroserver4 source /eda/mentor/2019-20/scripts/QUESTA-CORE-PRIME_2019.4_RHELx86.shvsim ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim -voptargs=+acc SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscillasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> Om en legger til testbenk signalene i wave vinduet så får en opp markeringer der hvor det har oppstått feil, rød for error og gul for warning. En kan så trykke på markeringene og få opp feilmeldingen. ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. [[Category:VHDL]] [[Category:Mikroelektronikk]] 5b6985cf1c06d998628533fe860a626960023d1a 2815 2814 2021-02-04T21:09:23Z Nfyku 4 /* Do-file og testbenk */ wikitext text/x-wiki ===Simulering av kode og testbenk i QuestaSim=== ==Do-file og testbenk== Vi vil lage ei Do-file for å sleppe å skrive inn stimuli manuellt kvar gang vi simulerer. Testbenken er eit nyttig hjelpemiddel for å kontrollere resultet frå simulering. Oppstart av modelsim Opne eit terminalvindu, og skriv : ssh -X mikroserver4 source /eda/mentor/2019-20/scripts/QUESTA-CORE-PRIME_2019.4_RHELx86.sh vsim ==Lage prosjekt i modelsim== Velg: file >new>project. Deretter kan du legge til vhdl-filer ved å velge add to project>add existing file. I denne oppgåva treng vi fila: sr_latch. Husk å kompliere vhdl filer før du simulerer. Koden til SR_latch.vhdl <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ==Bruk av "Do-file"== Første del av oppgåva er å konstruere ei såkalt do-file som beskriv stimuli til sr_latch. Dette er ganske enkelt ei textfil som kan sjå slik ut: <pre> # Starter simulering på nytt (clear) restart -f # Force s til 1 etter 100ns og til 0 etter 200ns, gjentar etter 200 ns force s 1 100 ns, 0 200 ns -repeat 200 ns force r 1 100 ns, 0 300 ns -repeat 400 ns # Simulerer i 800ns run 800 ns </pre> Bruk av do-file <pre> vsim -voptargs=+acc SR_latch add wave * do f.do </pre> Resultat av simulering # ** Error: (vsim-3601) Iteration limit reached at time 500 ns. Som viser at vi får oscillasjon etter 500ns. Vi får også opp eit wave-vindu med alle signal som er beskrive i entity. ==Testbenk i VHDL== No skal vi lære oss å lage ein testbench som testar utverdiane mot forventa resultat og skriv ut forskjellige feilmeldingar. Velg: add to project>new file (type vhdl). I denne skriv vi så testbenken vår. *Eksempelkode til SR_tb.vhdl:* <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; --Navn på testbenken. Vi treng ingen kopling til utanverda i testbenken. entity sr_tb is end entity sr_tb; architecture struct of sr_tb is --Deklarerer testsignalar og kva type dei er. signal S_tb : std_logic; signal R_tb : std_logic; signal Q_tb : std_logic; signal QB_tb : std_logic; begin --Velg kva einheit testbenken skal teste. SR : entity SR_latch(behave) --Koblar signala fra einheiten til testbenken. port map ( S => S_tb, R => R_tb, Q => Q_tb, QB => QB_tb); --Setter testvektorane, venter og ser kva vi får ut. --Samanliknar med forventa resultat, og gir ut eventuelle error. --Vi har lagt inn alle feiltypane i assert som eit eksempel. process begin --Setter S_tb <= '0'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q vart ikkje 1!" severity Error; assert (QB_tb = '0') report "QB vart ikkje 0!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier for å lage feilmelding assert (Q_tb = '0') report "Dette er ein feil" severity Error; assert (QB_tb = '1') report "Ein feil til" severity warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q vart ikkje 0!" severity Error; assert (QB_tb = '1') report "QB vart ikkje 1!" severity Error; --Ingen endring S_tb <= '1'; R_tb <= '1'; wait for 100 ns; --Tester på feil verdier assert (Q_tb = '1') report "Endå meir feil" severity note; assert (QB_tb = '0') report "hu, masse feil ja" severity Warning; --Reset S_tb <= '1'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '0') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Set og reset S_tb <= '0'; R_tb <= '0'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '1') report "QB does not match the expected value!" severity Error; --Oscillilerer S_tb <= '1'; R_tb <= '1'; wait for 100 ns; assert (Q_tb = '1') report "Q does not match the expected value!" severity Error; assert (QB_tb = '0') report "QB does not match the expected value!" severity Error; end process; end; </pre> For å kjøre igjennom hele filen bruker en run -all ==Resultat== Vi kan leggje inn feil for å få fram nokon feil for å vise forskjellige feilmeldinger. Vi fekk også SR_latch til å oscillere. <pre> # ** Error: Dette er ein feil # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Warning: Ein feil til # Time: 200 ns Iteration: 0 Instance: :sr_tb # ** Note: Endå meir feil # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Warning: hu, masse feil ja # Time: 400 ns Iteration: 0 Instance: :sr_tb # ** Error: (vsim-3601) Iteration limit reached at time 600 ns. </pre> Om en legger til testbenk signalene i wave vinduet så får en opp markeringer der hvor det har oppstått feil, rød for error og gul for warning. En kan så trykke på markeringene og få opp feilmeldingen. ==Konklusjon== Vi kan lage ein do-file som styrer stimuli under simulering, slik at vi slepp å skrive kommandoer kvar gang vi simulerer. Vi kan lage ein testbench for å simuler og kontrollere svaret mot forventa resultat. Med assert kan vi skrive ut feilmeldinger av ulike typer når det oppstår feil. [[Category:VHDL]] [[Category:Mikroelektronikk]] 0cda34c218a0ad99a8fc53821f5435938b5e1ae3 XJTAG 0 189 2820 2672 2021-02-22T16:10:41Z Lra034 110 /* XJDeveloper Tutorial */ wikitext text/x-wiki =XJDeveloper Tutorial= You should run the tutorial XJDeveloper tutorial (you can search for the app, or it can be found under XJTAG 3.10 in the windows start meny). The program this tutorial is designed for is called XJDeveloper 3.10. In this tutorial you can choose between version 4.2 and 3.1 of the XJDemo board, we are using version 3.1. The tutorial provides a turtorial.zip file with the files you're going to use. Unzip this to a new folder for your project. Below are pictures of versions 1.2 and 2.0 of the XJDemo board side-by-side so you can identify which you have. The main identifying feature of version 2.0 is its blue thumbwheel. On the 3.1 version you will see the name written on the card. [[Image:XJDemo v3.1.png]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board. Refer to the schematic for the pinmapping for page 11 of the tutorial. # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. =Additional resources= [[XJTAG_for_new_prototypes]] [[Category:Mikroelektronikk]] fcf031cd7f55ca6ca0adcce017b38b80e95e6c07 File:XJDemo v3.1.png 6 689 2821 2021-02-22T16:11:09Z Lra034 110 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 XJTAG 0 189 2822 2820 2021-02-22T16:25:52Z Lra034 110 /* XJDeveloper Tutorial */ wikitext text/x-wiki =XJDeveloper Tutorial= You should run the tutorial XJDeveloper tutorial (you can search for the app, or it can be found under XJTAG 3.10 in the windows start meny), the tutorial contains a detailed description on what to do. The program this tutorial is designed for is called XJDeveloper 3.10. In this tutorial you can choose between version 4.2 and 3.1 of the XJDemo board, we are using version 3.1. The tutorial provides a turtorial.zip file with the files you're going to use. Unzip this to a new folder for your project. Below are a pictures of versions 3.1 of the XJDemo board. [[Image:XJDemo v3.1.png]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board. Refer to the schematic for the pinmapping for page 11 of the tutorial. # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. =Additional resources= [[XJTAG_for_new_prototypes]] [[Category:Mikroelektronikk]] 76e9dc1b634430df2b4dbfac1bf7a96421a6dbd0 2823 2822 2021-02-22T16:26:39Z Lra034 110 /* XJDeveloper Tutorial */ wikitext text/x-wiki =XJDeveloper Tutorial= You should run the tutorial XJDeveloper tutorial (you can search for the app, or it can be found under XJTAG 3.10 in the windows start meny), the tutorial contains a detailed description on what to do. The program this tutorial is designed for is called XJDeveloper 3.10. In this tutorial you can choose between version 4.2 and 3.1 of the XJDemo board, we are using version 3.1. The tutorial provides a turtorial3.zip file with the files you're going to use. Unzip this to a new folder for your project. Below are a pictures of versions 3.1 of the XJDemo board. [[Image:XJDemo v3.1.png]] =Running the XJDemo version 2.0 demo on the XJDemo version 1.2 card= We are using version 1.2 XJDemo board (most likely version 1.2). The main functional differences are: # The RAM circuit is a Holtek HT6116 2Kx8 bit as opposed to the BS62LV256SC on the v2.0 board. Refer to the schematic for the pinmapping for page 11 of the tutorial. # The ADC is not available on the v1.2 board # The jumper between the Altera and Xilinx device is not present on the v1.2 board You can download the modified tutorial files from [http://web.ift.uib.no/~kjetil/wiki/XJTAG%20Demo%20Board.zip here]. The tutorial aims to give you an understanding the process of creating an XJEase test system for a circuit, and the XJEase design philosophy. The tutorial can be navigated through the "Previous", "Home" and "Next" buttons at the top and bottom of each page in the tutorial. The structure of the tutorial is as follows: ==Circuit description== The tutorial begins with a description of the XJDemo board and links to the data sheets for each of the components in the circuit. ==Creating the project file== You will use XJDeveloper to create an XJEase description of the XJDemo board. This section explains how the various pieces of information are used, and what information can be gained from XJTAG automatically while creating the project file. ==Running the connection test== We run a connection test and demonstrate various types of error detection using the XJDemo board. ==Simple device testing== We create simple scripts to test the push buttons and LEDs. This illustrates the simplicity of programming in the XJEase language. ==More complex device testing== We test the memory device, by creating a script that contains the read and write cycles for the device, along with a simple memory test that uses these functions. ==Design reuse== Using a standard memory test and some standard IIC interface code, we quickly create some tests for the BS62LV256 static RAM and the EEPROM. ==DFT Analysis== The demo script is analysed to check the coverage of the test code and find out where extra tests need to be applied to improve the testability of the board. =Additional resources= [[XJTAG_for_new_prototypes]] [[Category:Mikroelektronikk]] 61f5babb61ae8fe7c200520dd17dd5f486c0b997 2824 2823 2021-02-22T16:38:51Z Lra034 110 wikitext text/x-wiki =XJDeveloper Tutorial= You should run the tutorial XJDeveloper tutorial (you can search for the app, or it can be found under XJTAG 3.10 in the windows start meny), the tutorial contains a detailed description on what to do. The program this tutorial is designed for is called XJDeveloper 3.10. In this tutorial you can choose between version 4.2 and 3.1 of the XJDemo board, we are using version 3.1. The tutorial provides a turtorial3.zip file with the files you're going to use. Unzip this to a new folder for your project. Below are a pictures of versions 3.1 of the XJDemo board. [[Image:XJDemo v3.1.png]] =XJLink Manager= XJLink Manager can be used to check if the XJDemo Board is properly connected and that the license is set correctly. You can open the program from the XJ-icon on the right side of the windows taskbar. If everything is fine the XJTask Manager should look like this: [[Image:XJLink Manager.png]] =Additional resources= [[XJTAG_for_new_prototypes]] [[Category:Mikroelektronikk]] da2d1602aaa04efdd968a54e040626ddc3ff900e 2826 2824 2021-02-22T16:41:55Z Lra034 110 /* XJDeveloper Tutorial */ wikitext text/x-wiki =XJDeveloper Tutorial= You should run the tutorial XJDeveloper Tutorial (you can search for the app, or it can be found under XJTAG 3.10 in the windows start meny), the tutorial contains a detailed description on what to do. The program this tutorial is designed for is called XJDeveloper 3.10. In this tutorial you can choose between version 4.2 and 3.1 of the XJDemo board, we are using version 3.1. The tutorial provides a turtorial3.zip file with the files you're going to use. Unzip this to a new folder for your project. Below are a pictures of versions 3.1 of the XJDemo board. [[Image:XJDemo v3.1.png]] =XJLink Manager= XJLink Manager can be used to check if the XJDemo Board is properly connected and that the license is set correctly. You can open the program from the XJ-icon on the right side of the windows taskbar. If everything is fine the XJTask Manager should look like this: [[Image:XJLink Manager.png]] =Additional resources= [[XJTAG_for_new_prototypes]] [[Category:Mikroelektronikk]] 2c9117f080ab2d3244572518808d44a7584f0044 File:XJLink Manager.png 6 690 2825 2021-02-22T16:39:27Z Lra034 110 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 ParticlePhysicsGroupMeetings 0 139 2827 2785 2021-02-26T21:01:24Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 12:00, on zoom, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics). This includes 2016-2017 Bergen-Oslo meetings. https://indico.cern.ch/category/7495/ Grieg project meetings, UiB+UW are here: https://wiki.uib.no/ift/index.php/EarlyUniverseProjectMeetings Norwegian Center for CERN Related Research meetings (most of them protected in 2021) are here: https://indico.cern.ch/category/13574/ Old and not updated Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here (I still keep it for a while): https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2018 === "Spatind conference", Nordic Bi-annual conference in High Energy Physics, 2-8 January 2018 [https://indico.cern.ch/event/666278/ web page] Please register ASAP. you are (most probably) funded by the HEPP project. * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] b0dbd9fbb9d160979ceed188646ecb248979d8b5 2838 2827 2021-03-24T19:57:01Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 12:00, on zoom, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics). https://indico.cern.ch/category/7495/ Grieg project meetings, UiB+UW are here: https://wiki.uib.no/ift/index.php/EarlyUniverseProjectMeetings Norwegian Center for CERN Related Research meetings (most of them protected in 2021) are here: https://indico.cern.ch/category/13574/ Old and not updated Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here (I still keep it for a while): https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2018 === "Spatind conference", Nordic Bi-annual conference in High Energy Physics, 2-8 January 2018 [https://indico.cern.ch/event/666278/ web page] Please register ASAP. you are (most probably) funded by the HEPP project. * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 67084fb2948eb325a7a96d603e7331b032003b44 2839 2838 2021-03-24T20:02:29Z Nfyal 26 wikitext text/x-wiki == Seminar and meeting information == Our group meetings (some) are at 12:00, on zoom, wednesdays, look for specified category. Categories "BERGEN-HEPP", "BERGEN SUSY and DM" etc etc will be used as these meetings are already booked, but the subjects discussed will depend on the meeting and can be pertinent to all HEPP project members (High Energy Particle Physics). https://indico.cern.ch/category/7495/ Grieg project meetings (grieg2020), UiB+UW are here: https://wiki.uib.no/ift/index.php/EarlyUniverseProjectMeetings Norwegian Center for CERN Related Research meetings (most of them protected in 2021) are here: https://indico.cern.ch/category/13574/ Old and not updated Twiki for common ATLAS-SUSY Oslo-Bergen meetings can be found here (I still keep it for a while): https://twiki.cern.ch/twiki/bin/viewauth/Atlas/AtlasSUSYNorway == Particle Physics Group Meetings/Seminars/Tutorials == Click the dates for seminar details (slides, etc) === 2018 === "Spatind conference", Nordic Bi-annual conference in High Energy Physics, 2-8 January 2018 [https://indico.cern.ch/event/666278/ web page] Please register ASAP. you are (most probably) funded by the HEPP project. * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] === 2017 === EPS conference in particle physics, July 5-11, Venice: [http://eps-hep2017.eu/ web page] First circular [[File:EPS-FirstCircular.txt]] === 2016 === * ATLAS Higgs and tau workshop in Sheffield, October, [ https://indico.cern.ch/event/559951/timetable/#20161024 indico page] * PhD course on flavor physics, Copenhagen [https://indico.nbi.ku.dk/conferenceDisplay.py?confId=897 indico page], November. * Nordic b-annual particle physics meeting http://www.hip.fi/spatind2016 === 2015 === Look into https://indico.cern.ch/category/2/ for BERGEN or ATLAS Norway ECFA meeting in Norway, October 2015 https://indico.cern.ch/event/403355/timetable/#20151002.detailed Group outing in Ustaoset 11-13 December 2015: https://indico.cern.ch/event/458080/ === 2012 === Group presentation for Geir Anton visit at CERN, Feb 2012<br> *Wolfgang Liebig, Atlas Analysis and Computing [[File:ATLAScomp+anal.pdf]] *Heidi Sandaker, Damara progress report [[File:Damara.pdf]] *Anna Lipniacka ATLAS@UiB [[File:atlasuib2012.pdf]] === 2011 === Special pensum course: Introduction to ATLAS<br> November 2011<br> Wolfgang Liebig (Wolfgang.Liebig at cern.ch) * ATLAS detector [[File:ATLASdetector.pdf]] * ATLAS physics [[File:ATLASphyics.pdf]] * ATLAS reconstruction and performance [[File:ATLASperformance.pdf]] * ATLAS tools and practicalities [[File:ATLAStools.pdf]] === 2009 === * [[December 9 2009 seminar - Top quark charge]] * [[December 2 2009 seminar - Theory]] * [[November 25 2009 seminar - Bs to mu,mu and Blackholes]] * [[November 4 2009 seminar - 3D detectors and the lab]] * [[October 14 2009 seminar - taus]] * [[October 9 2009 review - poster session]] * [[Shifts/OTP/fimm group meeting May 5, 2009]] * [[SUSY/Tau analysis meeting March 12, 2009]] * [[Mini parallab workshop, March 19, 2009]] 4b643abc5174ae5f712ca3038b202b45ede26b94 Particle Physics group 0 137 2828 2787 2021-02-26T21:05:00Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics is funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway. The last funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report (not the final version alas) from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] eb755f67037b98452edb3489fd5baf0ffafc69a3 2840 2828 2021-03-24T22:29:43Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas0.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics was funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway until 2020. Now we are a part of Center for CERN Related Research. HistorY: The last HEPP funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 573bcea19223f2afe9b25b3772543d9e0c9dd9d5 2844 2840 2021-05-23T15:45:16Z Nfyal 26 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas2.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics was funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway until 2020. Now we are a part of Center for CERN Related Research. HistorY: The last HEPP funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 793fa0091a8c9a3256df42c4618024e47114827a 2858 2844 2021-09-07T11:50:39Z Jdj005 113 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. . (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas2.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics was funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway until 2020. Now we are a part of Center for CERN Related Research. HistorY: The last HEPP funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). We are also involved in the [http://www.cta-observatory.org/ Cherenkov Telescope Array]. [[Cherenkov_Telescope_Array_-_Norway|Click here for more info]]. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[ The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page ] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page ]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== all our jobs are listed in [jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here ] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [ http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 163b58b8180a674fe2d50a7ae94b662736d8d4de ATLASThesesNotes 0 234 2829 2801 2021-02-26T21:10:52Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] bb7bd2ed5729053c0491553301b4ad29cade126a 2830 2829 2021-02-26T21:11:56Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[http://web.ift.uib.no/~lipniack/Thesis_ThereseSjursen_April11_2014.pdf]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 . Search for Dark Matter produced in association with a Higgs boson decaying to tau leptons at s√ = 13 TeV with the ATLAS detector [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] d691d462952d936baf5b4e4003c9c78863ec125c 2831 2830 2021-02-27T21:47:37Z Nfyal 26 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[https://cds.cern.ch/record/1955577]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 . Search for Dark Matter produced in association with a Higgs boson decaying to tau leptons at s√ = 13 TeV with the ATLAS detector [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 72cd93caf93fdba4a00ebceb9e96510d882942a5 2846 2831 2021-06-30T09:53:55Z Nfyst 67 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[https://cds.cern.ch/record/1955577]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 . Search for Dark Matter produced in association with a Higgs boson decaying to tau leptons at s√ = 13 TeV with the ATLAS detector [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Wai Chun Leung: A Setup for Testing of Silicon Pixel Modules for the ITk Tracker in the ATLAS Experiment at CERN, June 2021. * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] e3758da88d0138220701ac13b44e7cf5c213f9ff 2848 2846 2021-06-30T09:57:48Z Nfyst 67 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[https://cds.cern.ch/record/1955577]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 . Search for Dark Matter produced in association with a Higgs boson decaying to tau leptons at s√ = 13 TeV with the ATLAS detector [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Wai Chun Leung: A Setup for Testing of Silicon Pixel Modules for the ITk Tracker in the ATLAS Experiment at CERN, June 2021. [[File:Master_thesis_Wai_Chun.pdf]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 553dcc1331d047aa3148406999a0f44f36dbd78a 2849 2848 2021-06-30T10:50:05Z Nfyst 67 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[https://cds.cern.ch/record/1955577]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 . Search for Dark Matter produced in association with a Higgs boson decaying to tau leptons at √s = 13 TeV with the ATLAS detector [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Wai Chun Leung: A Setup for Testing of Silicon Pixel Modules for the ITk Tracker in the ATLAS Experiment at CERN, June 2021. [[File:Master_thesis_Wai_Chun.pdf]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 3c7417e782ecf734fb26eaa4f86411bc26661aa3 2850 2849 2021-08-27T12:19:22Z Nfyst 67 wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[https://cds.cern.ch/record/1955577]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 . Search for Dark Matter produced in association with a Higgs boson decaying to tau leptons at √s = 13 TeV with the ATLAS detector [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Wai Chun Leung: A Setup for Testing of Silicon Pixel Modules for the ITk Tracker in the ATLAS Experiment at CERN, June 2021. [[File:Master_thesis_Wai_Chun.pdf]] * Tor Gunnar Hagen: A Search for the Higgs Boson in decays to e+e- using data from the ATLAS detector (June 2021) [[https://bora.uib.no/bora-xmlui/handle/11250/2770402]] * Rasmus Brekke: A study of mass reconstruction in Higgs to mu mu (June 2021) [[https://bora.uib.no/bora-xmlui/handle/11250/2771475]] * Sigurd Riis Haugen: Reconstruction of Charged Particle Tracks in Simulated Test Beams (August 2021). * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 2ab6317d3b48c45d4aa74362d9a332bd943cac9a 2866 2850 2022-01-17T09:22:42Z Nfo058 90 /* Defended Master theses */ wikitext text/x-wiki == Theses, Notes, Publications,Public Software ... == === Software === * SUSY scanner by Jan Lindroos [[https://github.com/JanLindroos/SUSYScanner ]] === Submitted and yet not defended Phd Thesis=== === Defended PhD theses === *Arshak Tonoyan - February 3rd 2012, Recreating the Top Quark: Commissioning and monitoring of the ATLAS Inner Detector and search for New Physics with heavy particles. [[File:Arshak_Thesis.pdf]] *Peter Rosendahl - Searching for the Higgs Boson in Pairs of tau Leptons in Data from the ATLAS Experiment (October 2013). [http://bora.uib.no/handle/1956/6382] *Therese Sjursen -Defended in June 2014, Search for Supersymmetry with Tau Leptons in Data from the ATLAS Experiment at the LHC. [[https://cds.cern.ch/record/1955577]] *Alex Kastanas October 2014, defended 12/12/14 Monitoring and Measurements with the ATLAS Inner Detector and Search for Supersymmetry using ATLAS data, [[File:ThesisMain_AlexKastanas.pdf]] * Jan Lindros, May 2016, Beyond the Standard Models in Particle Physics and Cosmology [[File:PhDthesis-jan-lindroos.pdf]] *Orjan Dale, June 2016, 24/06/2016 Searching for Dark Matter with the ATLAS and CTA Experiments [[File:PhDthesis_Dale-1.pdf]] * Justas Zalieckas, 2016, Determination of the ratio of b-quark fragmentation fractions f_s/f_d and study of the Higgs boson production and couplings with the ATLAS detector in pp collisions. [ * Steffen Mæland, April 2018, 'Pixel detector performance and study of CP invariance in H to tau tau decays with the ATLAS detector' [http://bora.uib.no/handle/1956/18106] * Nikolai Fomin, 2020 "Searches for sbottom quarks decaying to SM Higgs in ATLAS Run 2 data" [[File:Nikolai-thesis-final.pdf]] === Defended Master theses === * Kent-Olav Skjei - Atlas Detector Monitoring with Jets - Novmber 11th 2009 - [[File:Kent-Olav_Skjei-Thesis.pdf]] [[File:Kent-Olav_Skjei-MasterPresentation.pdf]] * Hilde Skjerdal - A Study of possible signatures for slow, heavily ionising particles in ATLAS * Maren Ugland - Measurement of the Bs mass in Bs -> J/ψφ -> μ+μ−K+K−, and physics validation with J/ψ events in ATLAS - September 25th 2008 - [[File:Maren_Ugland-Master_Thesis.pdf]] [[File:thesis_presentation.pdf]] * Alex Kastanas - Determination of invariant mass end-points in the mSUGRA coannihilation region - June 27th 2008 - [[File:Alex_Kastanas-Master_Thesis.pdf]] * Therese Sjursen - Search for SUSY signals with τ-leptons in the ATLAS detector - February 2008 - [[File:Therese_Sjursen-Master_Thesis.pdf]] * Øyvind Sætre - Construction, Testing and First Data Analysis with the Cosmic Ray Telescope - November 15th 2007 - [[File:Oyvind_Saetre-Master_Thesis.pdf]] * Kristine Helle- - June 1st 2010 -[[File:thesis_Helle.pdf]] * Anita Olausen- - June 1st 2010 - Måling av forholdet mellom ladning og masse for elektronet (not atlas) * Jørn H. Mæland- - June 1st 2010 -[[File:thesis_Maeland.pdf]] * Ørjan Svandal- - June 1st 2010 -[[File:thesis_Svandal.pdf]] * Alette Aasvold- A study of mass reconstruction in Z°→τ+τ- June 1st 2010 -[[File:thesis_aasvold.pdf]] * [[Orjan Dale - Master Thesis]][[File:thesis_orjan_dale.pdf]] * Justas Zalieckas 2012: Observation of the decays B⁰_s -> J/psi phiphi and B⁰_s -> J/psi K^*0 in the ATLAS detector * Steffen Mæland 2013: Study of the Bc meson properties with the ATLAS experiment * Muhammad Saddique Inam- The ATLAS and LHC ugrades. Some silicon pixel resuts, and study of possible graviton production. (June 2013) * Mayasa H Rashed August 2013: Measurement of radon concentrations and temperature profiles in boreholes (not Atlas) * Agnethe Seim Olsen - Master Thesis, Reaching Towards Higher Masses of Supersymmetric Particles Decaying to Tau Leptons, August 2014 [[http://web.ift.uib.no/~lipniack/Master_AgnetheSO.pdf]] * Simen Hellesund - June 1st 2016 . [[File:MasterSimenHellesund.pdf]] Search for lepton flavour violating H → μτ Higgs decays at 13 TeV * Magne Lauritzen - June 14th 2017 . [[File:MagneLauritzenMasters.pdf]] A Silicon Photomultiplier Based Readout System For A Cosmic Muon Telescope; Design And Implementation. The manal is here [[File:Manual_CRT.pdf]] * Andreas Heggelund - June 14th 2017 - [[http://bora.uib.no/handle/1956/16039]] Analysis of 3D Pixel Detectors for the ATLAS Inner Tracker Upgrade. * Are Træet - Sept 8th 2017. Study on viability of Gain Stabilization of SiPMs and determination of b-quark fragmentation fraction ratio fc/fu in pp collisions at sqrt(s) = 13 TeV. [[File:MasterAssignment-Are.pdf]] * Erlend Aakvaag, December 2020 . Search for Dark Matter produced in association with a Higgs boson decaying to tau leptons at √s = 13 TeV with the ATLAS detector [[https://bora.uib.no/bora-xmlui/handle/11250/2723789]] * Wai Chun Leung: A Setup for Testing of Silicon Pixel Modules for the ITk Tracker in the ATLAS Experiment at CERN, June 2021. [[File:Master_thesis_Wai_Chun.pdf]] * Tor Gunnar Hagen: A Search for the Higgs Boson in decays to e+e- using data from the ATLAS detector (June 2021) [[https://bora.uib.no/bora-xmlui/handle/11250/2770402]] * Rasmus Brekke: A study of mass reconstruction in Higgs to mu mu (June 2021) [[https://bora.uib.no/bora-xmlui/handle/11250/2771475]] * Sigurd Riis Haugen: Reconstruction of Charged Particle Tracks in Simulated Test Beams (August 2021). * Wai Kit Leung: Search for squarks in events with jets, hadronically decaying τ -lepton, and missing transverse momentum in the final state in proton-proton collision at s = 13 TeV with the ATLAS detector (September 2021) [[https://bora.uib.no/bora-xmlui/handle/11250/2780585]] * Some older atlas theses may be found here: [[http://folk.uib.no/nfyst/atlas_local.html]] =public presentations which are not in indico .. ==== *Steffen Maeland, Inga Strumke, machine learning to search for 2HDM, [[File:2hdmML.pdf]] 4fc2f47163dc34bb456f5318b0ac978d2a7d410a Bitvis UVVM VHDL Verification Component Framework 0 481 2832 2671 2021-03-09T15:02:52Z Kaf003 107 wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> The presentation can also be found in the uvvm_util folder. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [https://github.com/UVVM/UVVM_All Bitvis github]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wena <= '0'; sbi_if.rena <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant alert_level : in t_alert_level := error; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, msg, clk, sbi_if, alert_level, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] 00e731d527db8483993cca85ea3620533f47508d 2833 2832 2021-03-09T15:03:02Z Kaf003 107 Reverted edits by [[Special:Contributions/Kaf003|Kaf003]] ([[User talk:Kaf003|talk]]) to last revision by [[User:Put009|Put009]] wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> The presentation can also be found in the uvvm_util folder. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [https://github.com/UVVM/UVVM_All Bitvis github]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wena <= '0'; sbi_if.rena <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level := error; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, alert_level, msg, clk, sbi_if, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] 92833b53eed35233a8271fe235015a1b73959906 2834 2833 2021-03-09T15:04:22Z Kaf003 107 Changed position of alert_level to where it should be wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> The presentation can also be found in the uvvm_util folder. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [https://github.com/UVVM/UVVM_All Bitvis github]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wena <= '0'; sbi_if.rena <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant alert_level : in t_alert_level := error; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, msg, clk, sbi_if, alert_level, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] 00e731d527db8483993cca85ea3620533f47508d 2835 2834 2021-03-09T15:42:32Z Kaf003 107 Included the need to set sbi_if.ready signal high to avoid failure. wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> The presentation can also be found in the uvvm_util folder. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [https://github.com/UVVM/UVVM_All Bitvis github]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wena <= '0'; sbi_if.rena <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant alert_level : in t_alert_level := error; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, msg, clk, sbi_if, alert_level, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> We also need to set the sbi_if.ready signal high for this to work: <pre> clock_generator(clk, clock_ena, C_CLK_PERIOD, "IRQC TB clock"); -- Insert this here by the clock generator sbi_if.ready <= '1'; -- always ready in the same clock cycle. </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] 15f93ca60b44ed05218d270aa8a4cd8642fe67ab 2836 2835 2021-03-09T15:48:21Z Kaf003 107 Added some text recommending not including an overload wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> The presentation can also be found in the uvvm_util folder. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [https://github.com/UVVM/UVVM_All Bitvis github]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wena <= '0'; sbi_if.rena <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> This exact function is already overloaded in the UVVM packages, so including this in our testbench would produce compilation errors. So, let's not include it, but view it as an example of how it's done. Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant alert_level : in t_alert_level := error; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, msg, clk, sbi_if, alert_level, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> We also need to set the sbi_if.ready signal high for this to work: <pre> clock_generator(clk, clock_ena, C_CLK_PERIOD, "IRQC TB clock"); -- Insert this here by the clock generator sbi_if.ready <= '1'; -- always ready in the same clock cycle. </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] 14b6114b68b6f6a4cf01679b1505e4b9be503de5 GRIEG project "EarlyUniverse" 0 679 2837 2804 2021-03-24T19:53:25Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] The project is financed by Norwegian Financial Mechanism, with the latest possible use of funds in 31 of March 2024. This is Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. === [[EarlyUniverseProjectShared|Sharing Ideas]] === === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === === [[PublicationsOfInterests| Presentations of Interest]] === Bergen particle physics group twiki: [[https://wiki.uib.no/ift/index.php/Particle_Physics_group Bergen particle physics]] People and tasks in the project: Research objectives: 1) Machine learning assisted mono-jet anlysis in search for Dark Matter and new electricaly neutral stable particles and its theoretical interpretation. [ K. Sakurai, B. M. dit Latour, I. Lara, K. Rolbiecki, M. Olechowski, S. Pokorski, T. Buanes, A. Lipniacka, K. Tywoniuk, R. Masełek] 2) Discriminating theories by joint mono-jet and mono-Higgs analysis. [ K. Rolbiecki, T. B. Sjursen, I. Lara, J. Rosiek, T. Buanes, A. Lipniacka, Nikolai Fomin, Erlend Aakvaag] 3) Constraining the mechanism of the Electroweak Phase Transition by di-Higgs boson production, p p -> h h. [ M. Olechowski, A. Lipniacka, S. Pokorski, Z. Lalak, B. Stugu] 4) Probing new sources of CP violation in the Higgs-fermion sector. [ J. Rosiek, B. Stugu, K. Rolbiecki, K. Sakurai, A. Lipniacka, Erlend Aakvaag] 5) Investigating the sphaleron and mini-black hole production at the LHC and its dependence on the mechanism of EWPT. [ S. Pokorski, T. Buanes, I. Lara, K. Sakurai, M. Olechowski, Z. Lalak, A. Lipniacka, K. Tywoniuk, R. Masełek] [[Image:grieg-logo.png]] 2ba8680e3aab63d13edbc31d09c72b01f47d2971 2851 2837 2021-09-02T08:49:28Z Nfyal 26 wikitext text/x-wiki == EarlyUniverse, GRIEG project == [https://www.fuw.edu.pl/~ksakurai/GRIEG_strona/index.html GRIEG project "EarlyUniverse" official web page] The project is financed by Norwegian Financial Mechanism, with the latest possible use of funds in 31 of March 2024. This is Wiki page for "EarlyUniverse" GRIEG project, with participants from Bergen High Energy Physics Group, and Particle Theory Group, University of Warsaw. To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail to Anna Lipniacka and she will figure out who can activate your account. If you are financed by the project you need to acknowledge it with the following slide in your presentations. here : [https://www.fuw.edu.pl/~ksakurai/grieg/universal_slide.pdf slide] === [[EarlyUniverseProjectShared|Sharing Ideas]] === === [[EarlyUniverseProjectMeetings|Meetings, Seminars & Tutorials]] === === [[PublicationsOfInterests| Presentations of Interest]] === Bergen particle physics group twiki: [[https://wiki.uib.no/ift/index.php/Particle_Physics_group Bergen particle physics]] People and tasks in the project: Research objectives: 1) Machine learning assisted mono-jet anlysis in search for Dark Matter and new electricaly neutral stable particles and its theoretical interpretation. [ K. Sakurai, B. M. dit Latour, I. Lara, K. Rolbiecki, M. Olechowski, S. Pokorski, T. Buanes, A. Lipniacka, K. Tywoniuk, R. Masełek] 2) Discriminating theories by joint mono-jet and mono-Higgs analysis. [ K. Rolbiecki, T. B. Sjursen, I. Lara, J. Rosiek, T. Buanes, A. Lipniacka, Nikolai Fomin, Erlend Aakvaag] 3) Constraining the mechanism of the Electroweak Phase Transition by di-Higgs boson production, p p -> h h. [ M. Olechowski, A. Lipniacka, S. Pokorski, Z. Lalak, B. Stugu] 4) Probing new sources of CP violation in the Higgs-fermion sector. [ J. Rosiek, B. Stugu, K. Rolbiecki, K. Sakurai, A. Lipniacka, Erlend Aakvaag] 5) Investigating the sphaleron and mini-black hole production at the LHC and its dependence on the mechanism of EWPT. [ S. Pokorski, T. Buanes, I. Lara, K. Sakurai, M. Olechowski, Z. Lalak, A. Lipniacka, K. Tywoniuk, R. Masełek] [[Image:grieg-logo.png]] 0a0451e1fc194d48ea923f4f60ba2b0c695701dc File:Corner setup.png 6 691 2841 2021-05-07T14:07:17Z Hbi009 109 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 Layout XL and IHP SG13S 0 546 2842 2771 2021-05-07T14:08:18Z Hbi009 109 /* Post layout simulation */ wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" If you're laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] Note that there is a specified minimum enclosure in the design rules for vias between polysilicon and metal. This is because during the manufacturing process, the polysilicon and metal layers are created separately and the alignment is not perfect, so the polysilicon connection must be slightly larger to accommodate the potential offset between these layers. Enclosures can be seen by the polysilicon squares on the vias connecting the Q and Q_B lines in the design above. To set a via enclosure size, right click the via and go to properties. On the bottom, there is a setting for GatPoly enclosure. You must set each direction separately. = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". Open the Extraction tab and set your ground net (gnd!) in the "Reference node" box. Then run the QRC by pressing OK. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. If you want to simulate corners with the ptap1 and ntap1 components, you have to add two additional model files for your corner simulation. The model files for IHP 130nm process is located in /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/tech/SG13_PASSIVES/spectre/ Add SG13_cornerCAP.scs and SG13_cornerRES.scs to your model files and click ok. Now you can add bcs(Best Case Scenario) and wcs (Worst Case Scenario) to each corner, remember to enable the "tick box" for each of them. When you are done, the corner setup should look something like this: [[File:Corner_setup.png|400px]] [[Category:Mikroelektronikk]] 43608af85bcfd220460a83b5644c6935b83e6d2f 2843 2842 2021-05-07T14:29:09Z Hbi009 109 /* Post layout simulation */ wikitext text/x-wiki = Before starting layout = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Especially the part of connecting the substrate (chapter 8.2) and layout (chapter 9). Also make sure you understand the Layout Rules document. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" If you're laying out just one cell (in our case a SRAM-cell) make sure it contains defined values and not just pPar("")-values. This makes it easier to produce the right transistor-sizes etc. If you do not want to change your schematic, make a copy to another cell (e.g. from "sram" to "sram-fixed"). = Layout XL = From the schematic click Launch -> Layout XL to open the layout environment. [[File:layout.png|200px]] [[File:layout2.png|200px]] Layout XL opens with a new black empty canvas. The schematic window also opens. This is very useful as when we add our devices in the layout we can see which device they represent in the schematic as they get highlighted. Before anything you must define some options to avoid a lot of DRC-errors down the line. In the Layout Rules-document we read what our drawing-grid restrictions are (bottom of page 10). In Layout XL press E to open the Display Options-window. Remember that all size-values are in micrometers. Set the X and Y Snap Spacing to reflect the grid rules. Now press Shift-E to open the Layout Editor Options. Set gravity on(you can turn this off later with the g-key if you dont like it), and aperture around 0.1. This defines the the distance before snapping to another object etc. [[File:grid.png|200px]] [[File:gravity.png|200px]] = Generate from source = IHP has already defined transistors, pins, etc. for different sized, so it is not needed to draw these from scratch. You should, however, dissect them to understand how they work. To place all the devices from the schematic press Connectivity -> Generate -> All From Source. In this window we define which of our devices we want to place, the I/O pins, PR boundary (the area which our cell must be within) and floorplan settings (if needed). For our cell we need to change the IO-pins. We want the gnd and bit-lines to be vertical, and vdd and word-lines to be horizontal. This means that they will intersect each other and must be in different layers. We also want two gnd-pins which also can be defined here. Remember to uncheck Create under the sub!-pin since this is not needed. Change the Label options to a smaller font size (about 0.1 is ok). Click OK to see the results. [[File:result.png|600px]] The purple box is the PR boundary in which are layout must be contained. Notice how the ntap1 is highlighted in the schematic when clicked in the layout window. = Pin Placement = Press Place -> Pin Placement. This opens a windows that lets us define the position of our pins. This is very helpful to line up our design. Remember that the positions may be tweaked later. [[File:pinplacement.png|400px]] = Placing devices = If you are extremely lazy you can autoplace the components with Place -> Custom Digital -> Placer. This, however, will probably not give you the desired result. To help you place the the devices correctly it is helpful to see which devices that connect to each other and how. This is accomplished with Connectivity -> Nets -> Show/Hide All Incomplete Nets. This will give you a all the nets that are uncompleted and can be very daunting. However, you can use Ctrl++ (that is Ctrl and +-key ) to turn on or off the nets for the selected device. F4 switches between Full and Partial Select. Partial Select means that we are able to select individual pieces of a device, e.g. if we want to stretch a part. [[File:partial.png|50px]] [[File:partial2.png|50px]] == DRD == [[File:DRDbuttons.png|50px]] DRD stands for Dynamic Design Rule Checking and are helpful while laying out your design. DRD Enforce On prevents you from doing anything that breaks the rules, and DRD Notify tells you if what you are doing is illegal. Image below shows example of DRD Notify. [[File:DRD.png|200px]] == Drawing == To draw rectangles (e.g. NWell) choose the wanted layer on the left side then press R. To create a connection between to nodes you can either create a wire (Ctrl+W) or a path (P). A wire automatically helps with choosing layer, and may also be used to create vias to another layer by left-clicking. A complete layout could look something like this: [[File:sram.png|600px]] Note that there is a specified minimum enclosure in the design rules for vias between polysilicon and metal. This is because during the manufacturing process, the polysilicon and metal layers are created separately and the alignment is not perfect, so the polysilicon connection must be slightly larger to accommodate the potential offset between these layers. Enclosures can be seen by the polysilicon squares on the vias connecting the Q and Q_B lines in the design above. To set a via enclosure size, right click the via and go to properties. On the bottom, there is a setting for GatPoly enclosure. You must set each direction separately. = DRC = Run DRC by pressing Assura -> Run DRC. Make sure technology is SG13_dev and the Rule Set is default. Read about the different switches in the user guide (e.g. antenna-rules etc). If everything is ok this message should appear: [[File:drcok.png|200px]] The DRC should also be run for Density. See IHP user guide for how to produce dummy metal to fill the design. = LVS = This is covered in chapter 12 of the user guide. Run LVS by pressing Assura -> Run LVS. This will give you a match if the schematic and the layout match each other, or you will get some errors. [[File:LVS_summary.png|200px]] = Parasitic extraction QRC = This is covered in chapter 14 of the user guide. Before you run the QRC, the LVS has to match. To do an extraction of your circuit click Assura -> Run Quantus. In "Setup Dir" make sure the path is set to "/eda/design_kits/ihp_sg13/SG13S_616_rev1.0.2_a/Assura_SG13/qrc", where the technology files for the qrc run is. Set the "Parasitic Res Component" to "presistor ivpcell SG13_dev" and the "Parasitic Cap Component" to "pcapacitor ivpcell SG13_dev". Open the Extraction tab and set your ground net (gnd!) in the "Reference node" box. Then run the QRC by pressing OK. [[File:ASSURA_QRC.png|400px]] This should give you an extracted design called "av_extracted" in the cell of the library. This can be checked and viewed from the library manager. In this picture the extracted cell is a SRAM with bitline conditioning and a write driver. [[File:Extracted_layout_SRAM_with_bt_wd.png|400px]] = Post layout simulation = In the library manager make an copy of the SRAM cell, to use as a test bench cell. Click file -> new -> Cell View and make an config file in your new test bench cell. Use "config" as the type, and click "ok". In the new window click on the "Use template" and select "AMS", and click "ok". Then edit the view list and add "av_extracted" with the add box. Clicking ok will then bring you to the hierarchy editor. Then you need a test bench schematic. In your copied schematic you will have the whole SRAM or different symbols making up the SRAM, but for the simulation there should only be a symbol that matches the extracted layout. So go back to the schematic in the SRAM cell and make one symbol out of it. Put this symbol into the test bench schematic, and add the pins that are needed. Go back to the hierarchy editor and change the View to your test bench schematic and update the hierarchy. Then right click on the "view found" for the SRAM from the SRAM cell, and select the av_extracted. [[File:Hierarchy_editor.png|400px]] Then Launch -> ADE L to get the simulation setup. Setup -> Design and choose the config file from the test bench cell. Use the stimuli button to create the stimuli (copy the stimuli from the schematic simulation) for the test, and then run it. If you want to simulate corners with the ptap1 and ntap1 components, you have to add two additional model files for your corner simulation. These model files for IHP 130nm process is located in /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/tech/SG13_PASSIVES/spectre/ Add SG13_cornerCAP.scs and SG13_cornerRES.scs to your model files and click ok. Now you can add bcs(Best Case Scenario) and wcs (Worst Case Scenario) to each corner, remember to enable the "tick box" for each of them. When you are done, the corner setup should look something like this: [[File:Corner_setup.png|400px]] [[Category:Mikroelektronikk]] d4fc0b737831a72986f3e835b4a05ac035b4a90d Strålevern 0 572 2845 2728 2021-06-21T12:36:10Z Gge002 52 wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. ==List of sealed sources at the IFT== ===Storage 4=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 4 #1 | <sup>241</sup>Am | 27 | 1 000 | 2006 | 458 y | 60 keV gamma | OI428/Code: AMRB 13788 |- | 2 | Storage 4 #2 | <sup>57</sup>Co | 100 | 3 700 | 2006 | 272 d | 122 keV gamma | Code: CTR 8252 |- | 3 | Storage 4 #3 | <sup>133</sup>Ba | 100 | 3 700 | 2006 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Code: BDR 8252 |- | 4 | Storage 4 #4 | <sup>155</sup>Eu | 100 | 3 700 | 1993 | 4.8 y | 105 keV gamma | |- | 5 | Storage 4 #5 | <sup>226</sup>Ra | 2.7 | 100 | ~1970 | 1 600 y | 186 keV gamma | |- | 6 | Storage 4 #6 | <sup>137</sup>Cs | 60 | 2 200 | 1986 | 30 y | 662 keV gamma | |- | 7 | Storage 4 #7 | <sup>241</sup>Am | 3 000 | 100 000 | 1977 | 458 y | 60 keV gamma | UB/FIB 539 |- | 8 | Storage 4 #8 | <sup>241</sup>Am | 10 000 | 370 000 | 1987 | 458 y | | Variable X-ray source |- | 9 | Storage 4 #9 | <sup>55</sup>Fe | 20 000 | 740 000 | N/A | 2.7 y | X-rays | Decayed |- | 10 | Storage 4 #10 | <sup>109</sup>Cd | 1 | 37 | 2011 | 427 d | 88 keV gamma | Calibr. Set Spectrum Techniques |- | 11 | Storage 4 #11 | <sup>57</sup>Co | 1 | 37 | 2011 | 272 d | 122 keV gamma | Calibr. Set Spectrum Techniques |- | 12 | Storage 4 #12 | <sup>133</sup>Ba | 1 | 37 | 2011 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. Set Spectrum Techniques |- | 13 | Storage 4 #13 | <sup>60</sup>Co | 1 | 37 | 2011 | 5.3 y | 1 173, 1 333 keV gamma | Calibr. Set Spectrum Techniques |- | 14 | Storage 4 #14 | <sup>137</sup>Cs | 1 | 37 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 15 | Storage 4 #15 | <sup>22</sup>Na | 1 | 37 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 16 | Storage 4 #16 | <sup>137</sup>Cs<sup>65</sup>Zn | 1 | 37 | 2011 | 30 y + 244 d | 662 + 1 116 keV gamma | Calibr. Set Spectrum Techniques |- | 17 | Storage 4 #17 | <sup>54</sup>Mn | 1 | 37 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 18 | Storage 4 #18 | <sup>137</sup>Cs | 10 | 370 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 19 | Storage 4 #19 | <sup>22</sup>Na | 10 | 370 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 20 | Storage 4 #20 | <sup>54</sup>Mn | 10 | 370 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 21 | Storage 4 #21 | <sup>133</sup>Ba | 10 | 370 | 2012 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. source Eckert & Ziegler |- | 22 | Storage 4 #22 | <sup>241</sup>Am | 1 | 37 | 1990 | 458 y | 60 keV gamma | Laborel box (ruined and sagregated for disposal) |- | 23 | Storage 4 #23 | <sup>109</sup>Cd | 1 | 37 | 1990 | 427 d | 88 keV gamma | Laborel box |- | 24 | Storage 4 #24 | <sup>139</sup>Ce | 1 | 37 | 1990 | 138 d | 166 keV gamma | Laborel box |- | 25 | Storage 4 #25 | <sup>57</sup>Co | 1 | 37 | 1990 | 272 d | 122 keV gamma | Laborel box |- | 26 | Storage 4 #26 | <sup>137</sup>Cs | 1 | 37 | 1190 | 30 y | 662 keV gamma | Laborel box |- | 27 | Storage 4 #27 | <sup>51</sup>Cr | 1 | 37 | 1990 | 27 d | 320 keV gamma | Laborel box |- | 28 | Storage 4 #28 | <sup>54</sup>Mn | 1 | 37 | 1990 | 312 d | 835 keV gamma | Laborel box |- | 29 | Storage 4 #29 | <sup>113</sup>Sn | 1 | 37 | 1990 | 115 d | 255 keV gamma | Laborel box |- | 30 | Storage 4 #30 | <sup>85</sup>Sr | 1 | 37 | 1990 | 65 d | 355 keV gamma | Laborel box |- | 31 | Storage 4 #31 | <sup>65</sup>Zn | 1 | 37 | 1990 | 244 d | 1 116 keV gamma | Laborel box |- | 32 | Storage 4 #32 | <sup>133</sup>Ba | 4 000 | 148 000 | 2014 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Eckert & Ziegler, Brass holder |- | 33 | Storage 4 #33 | <sup>90</sup>Sr | 54 | 2 010 | 1993 | 29 y | e<sup>-</sup> | DESY |- | 34 | Storage 4 #34 | <sup>55</sup>Fe | 1 000 | 37 000 | 2014 | 2.7 y | X-rays | UiB# 0218698 |- | 35 | Storage 4 #35a | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- | 36 | Storage 4 #35b | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- |} ===Storage 3=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 3 #1 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 2 | Storage 3 #2 | <sup>133</sup>Ba | 1 | 37 | 2013 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | |- | 3 | Storage 3 #3 | <sup>22</sup>Na | 1 | 37 | 2013 | 2.6 y | 511, 1 275 keV gamma | |- | 4 | Storage 3 #4 | <sup>57</sup>Co | 1 | 37 | 2013 | 272 d | 122 keV gamma | |- | 5 | Storage 3 #5a | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 6 | Storage 3 #5b | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 7 | Storage 3 #6 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 3 #7 | <sup>241</sup>Am | 1 | 37 | 1976 | 458 y | Alpha + 60 keV gamma | Glass tube set |- | 9 | Storage 3 #8 | <sup>90</sup>Sr | 1 | 37 | 1976 | 29 y | e<sup>-</sup> | Glass tube set |- | 10 | Storage 3 #9 | <sup>55</sup>Fe | 10 | 370 | 1976 | 30 y | 662 keV gamma | Glass tube set |- | 11 | Storage 3 #10 | <sup>106</sup>Ru | 2.7 | 100 | 2000 | 374 d | e<sup>-</sup> | |- | 12 | Storage 3 #11 | <sup>241</sup>Am | 10 | 370 | 1975 | 458 y | Alpha + 60 keV gamma | ORTEC AM-1U, S/N M-1343, act. 0.088 |- |} ===Storage 2=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 2 #1a | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 2 | Storage 2 #1b | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 3 | Storage 2 #1c | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 4 | Storage 2 #1d | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 5 | Storage 2 #1e | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 6 | Storage 2 #1f | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 7 | Storage 2 #2 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 2 #3a | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 9 | Storage 2 #3b | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 10 | Storage 2 #4a | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 11 | Storage 2 #4b | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 12 | Storage 2 #5a | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 13 | Storage 2 #5b | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 14 | Storage 2 #6 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 15 | Storage 2 #7 | <sup>152</sup>Eu | 0.04 | 1.5 | 2006 | 13.5 y | Many gamma lines | Sealed Liquid |- | 16 | Storage 2 #8a | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 17 | Storage 2 #8b | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 18 | Storage 2 #8c | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 19 | Storage 2 #9a | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 20 | Storage 2 #9b | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 21 | Storage 2 #9c | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 22 | Storage 2 #9d | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 23 | Storage 2 #10 | <sup>152</sup>Eu | 1 | 37 | 2005 | 13.5 y | Many gamma lines | |- | 24 | Storage 2 #11a | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 25 | Storage 2 #11b | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 26 | Storage 2 #11c | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 27 | Storage 2 #11d | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 28 | Storage 2 #12a | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 29 | Storage 2 #12b | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 30 | Storage 2 #12c | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 31 | Storage 2 #13 | <sup>241</sup>Am | 0.24 | 9 | N/A | 458 y | 60 keV gamma | GDM 625 |- | 32 | Storage 2 #14 | <sup>137</sup>Cs | 1.22 | 45 | N/A | 30 y | 662 keV gamma | GDM 134 |- | 33 | Storage 2 #15 | UO<sub>2</sub> | N/A | N/A | N/A | N/A | N/A | Nuclear fuel pellet (black cylinder in epoxy cube) |- |} ===Storage 1=== ====White==== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 1W #1 | <sup>241</sup>Am | 10 000 | 370 000 | | 458 y | X-rays | Variable X-ray source |- | 2 | Storage 1W #2 | <sup>241</sup>Am | 10 | 370 | 1993 | 458 y | 60 keV gamma | DA289 written on the source |- | 3 | Storage 1W #3 | <sup>60</sup>Co | 10 | 370 | 1970 | 10.5 y | 1 173, 1 333 keV gamma | A943F |- | 4 | Storage 1W #4 | <sup>147</sup>Pm | 10 000 | 370 000 | 1974 | 2.6 y | 76, 198 keV gamma | A1124/N11958 |- | 5 | Storage 1W #5 | <sup>137</sup>Cs | 10 | 370 | | 30 y | 662 keV gamma | S/N 15319; A919F |- | 6 | Storage 1W #6 | <sup>60</sup>Co | 1 | 37 | | 10.5 y | 1 173, 1 333 keV gamma | S/N 811-L-1 |- | 7 | Storage 1W #7 | <sup>241</sup>Am | 0.1 | 3.7 | 1966 | 458 y | 60 keV gamma | A922F; S/N M954 Ortec |- | 8 | Storage 1W #8 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 9 | Storage 1W #9 | <sup>137</sup>Cs | 100 | 3 700 | 1984 | 30 y | 662 keV gamma | |- | 10 | Storage 1W #10 | <sup>241</sup>Am | 14 000 | 518 000 | 1984 | 458 y | 60 keV gamma | M55005 |- | 11 | Storage 1W #11 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 12 | Storage 1W #12 | <sup>226</sup>Ra | 5-10 | 185-370 | 1970 | 1 600 y | 186 keV gamma | A859F; Leybold in a jar |- | 13 | Storage 1W #13 | <sup>137</sup>Cs | <10 | <370 | 2005 | 30 y | 662 keV gamma | Isotope generator |- | 14 | Storage 1W #14a | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 15 | Storage 1W #14b | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 16 | Storage 1W #14c | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 17 | Storage 1W #15 | <sup>90</sup>Sr | 2 000 | 74 000 | 1987 | 29 y | e<sup>-</sup> | Amersham (in a blue cylindrical collimator) |- | 18 | Storage 1W #16 | | | | 1945 | | | Hiroshima dust |- | 19 | | | 0 | 0 | 2005 | | | Eluting solution for Tilf #13 Isotope generator |- |} ====Black==== {| class="wikitable" |- ! Item ! Source ID ! Activity, counts/s* ! Note |- | 1 | Storage 1B #1 | ~20 | Storage 1B R. 1 |- | 2 | Storage 1B #2 | ~120 | Storage 1B G. 1 |- | 3 | Storage 1B #3 | ~60 | Storage 1B G. 2 |- | 4 | Storage 1B #4 | ~100 | Storage 1B G. 3 |- | 5 | Storage 1B #5 | ~10 | Storage 1B G. 4 |- | 6 | Storage 1B #6 | ~10 | Storage 1B G. 5 |- | 7 | Storage 1B #7 | ~0 | Storage 1B G. 6 |- | 8 | Storage 1B #8 | ~220 | Storage 1B G. 7 |- | 9 | Storage 1B #9 | ~150 | Storage 1B G. 8 |- | 10 | Storage 1B #10 | ~10 | Storage 1B G. 9 |- | 11 | Storage 1B #11 | ~350 | Storage 1B G. 10 |- | 12 | Storage 1B #12 | ~500 | Storage 1B G. 11 |- | 13 | Storage 1B #13 | ~1 000 | Storage 1B G. 12 |- |} <nowiki>*</nowiki>Activity measured with an 1" NaI(Tl) crystal 63621831cec795661ca4f24acbe014e306df79e4 File:Master thesis Wai Chun.pdf 6 692 2847 2021-06-30T09:55:29Z Nfyst 67 wikitext text/x-wiki da39a3ee5e6b4b0d3255bfef95601890afd80709 Main Page 0 1 2852 2799 2021-09-07T11:21:45Z Jdj005 113 wikitext text/x-wiki =Velkommen til [http://www.uib.no/ift Institutt for Fysikk og Teknologis]Wiki= * [[DAMARA]] * [[Detector lab]] * [[Cherenkov Telescope Array - Norway]] * [[Eksperimentalfysikk med prosjektoppgave - PHYS117]] * [[Experimental Nuclear Physics group]] * [[Microelectronics group]] * [http://wiki.uib.no/nanolab Nano Lab] * [[Particle Physics group]] * [[GRIEG project "EarlyUniverse"]] * [[Strålevern]] * [[Teknisk avdeling]] == Komme i gang == * [[Få tilgang til å opprette eller redigere sider i wikien]] * [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] * [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ] * [http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list] 43b4291aa95f153830b8499ff604bb82f908c739 Cherenkov Telescope Array - Norway 0 693 2853 2021-09-07T11:24:00Z Jdj005 113 Created page with "Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] - a next level observatory for gamma ray astronomy." wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] - a next level observatory for gamma ray astronomy. ca95db5b2e1006b2f05e743e47044690b4b67957 2854 2853 2021-09-07T11:28:52Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have regular meetings and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Some youtube videos (the last one already introduces you to coding with gammapy. So you can also look at this later, once you know which software you will use): - Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU - Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida - Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs - Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS - More detailed talk on gammapy by Axel (this can be used for getting start with gammapy, so this really gets you set up for coding, etc. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU d20b32df4554b985e3635faa0dcd351957e2152c 2855 2854 2021-09-07T11:30:40Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have regular meetings and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Some youtube videos: - Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU - Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida - Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs - Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS - More detailed talk on gammapy by Axel (this can be used for getting start with gammapy, so this really gets you set up for coding, etc. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU 33eaaa299b59a2894b7da27b826b061343bd4cf8 2856 2855 2021-09-07T11:32:15Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have regular meetings and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU df2327906ba93c4add0617280e5223d0b15af4b6 2857 2856 2021-09-07T11:33:33Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU 540264eb217a303948a4a61d44516fb36df03a71 2859 2857 2021-09-14T07:53:10Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos 2df85befeee815a93e27453b3382d464c176e399 2860 2859 2021-09-14T07:57:48Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 aaae5422674ae3e58bee569c61f5ac9e1e108de6 2861 2860 2021-09-30T11:24:58Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 * Equatorial coordinate system explained: https://www.youtube.com/watch?v=WvXTUcYVXzI == Registering new arrivals == The group leader has to the name to this list: https://portal.cta-observatory.org/Bodies/ProjectOffice/Lists/People/Grouped.aspx and then an email has to be sent to Tiziana to ask for an account for the CTA web services. 72184734eda4ecc0b844cc55958465c33e3a9f79 2862 2861 2021-09-30T11:25:41Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. == Information for beginners == Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 * Equatorial coordinate system explained: https://www.youtube.com/watch?v=WvXTUcYVXzI = Registering new arrivals = The group leader has to add the name to this list: https://portal.cta-observatory.org/Bodies/ProjectOffice/Lists/People/Grouped.aspx and then an email has to be sent to Tiziana to ask for an account for the CTA web services. fe70ea3e33dfb45938e0d74e8f2edbc69fc8c99f 2863 2862 2021-09-30T11:26:06Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. = Information for beginners = Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 * Equatorial coordinate system explained: https://www.youtube.com/watch?v=WvXTUcYVXzI == Registering new arrivals == The group leader has to add the name to this list: https://portal.cta-observatory.org/Bodies/ProjectOffice/Lists/People/Grouped.aspx and then an email has to be sent to Tiziana to ask for an account for the CTA web services. 20a60435f46c37c4c0ed1c8db4c1d945ce127b31 2864 2863 2021-11-05T13:14:19Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. = Information for beginners = Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Introductory talk about DM searches at CTA: https://www.youtube.com/watch?v=g2tyOIsy1kQ * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 * Equatorial coordinate system explained: https://www.youtube.com/watch?v=WvXTUcYVXzI == Registering new arrivals == The group leader has to add the name to this list: https://portal.cta-observatory.org/Bodies/ProjectOffice/Lists/People/Grouped.aspx and then an email has to be sent to Tiziana to ask for an account for the CTA web services. 1fb2930b05e1e5554c94c676f9501d8471389b26 2865 2864 2021-12-03T08:43:08Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. = Information for beginners = Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Introductory talk about DM searches at CTA: https://www.youtube.com/watch?v=g2tyOIsy1kQ * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 * Equatorial coordinate system explained: https://www.youtube.com/watch?v=WvXTUcYVXzI * Rather lengthy and detailed introduction to the field: https://arxiv.org/abs/2111.01198 == Registering new arrivals == The group leader has to add the name to this list: https://portal.cta-observatory.org/Bodies/ProjectOffice/Lists/People/Grouped.aspx and then an email has to be sent to Tiziana to ask for an account for the CTA web services. aa1778718df1b9ac925d5feadaf2511f1b19ca3a IHP 130nm process 0 472 2867 2773 2022-08-24T12:25:44Z Are033 82 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver: ssh -X mikroserver5 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2019-20/scripts/analog.sh cd ~/ihp/cds/ source /eda/design_kits/ihp_sg13/sh.cadence virtuoso & To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] = Before starting designing = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Make sure that your web browser is closed or started from the mikroserver, else the file will not be found. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] cf6253c5ad8bc35fcd98806bc8d35529c93378ae Cadence Virtuoso overview 0 38 2868 2561 2022-09-05T09:18:59Z Are033 82 wikitext text/x-wiki = IC design flow using Cadence = We have access to several silicon technologies from different foundries * 130nm CMOS process from Taiwan Semiconductor Manufacturing: '''[[ TSMC 130nm process ]]''' * 130nm SiGe process from Innovations for High Performance Microelectronics: '''[[ IHP 130nm process ]]''' * 350nm CMOS process from Austria Mikro Systeme: '''[[ AMS 350nm process ]]''' = Design entry using schematic capture = * Make sure you have set correct library. * Make sure you run virtuoso from the same folder as your 'cds.lib'-folder ('~/LIBRARY_VENDOR/') = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[MikroserverSetup]] - setup for easy connection to the mikroservers and Cadence Virtuoso [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[DCoperatingparameters]] - Guide for showing transistor operating points in the schematic [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 028c4b25c19bacb7e3e2464d0b7b3375c16e80c0 2869 2868 2022-09-06T08:01:50Z Are033 82 /* Design entry using schematic capture */ wikitext text/x-wiki = IC design flow using Cadence = We have access to several silicon technologies from different foundries * 130nm CMOS process from Taiwan Semiconductor Manufacturing: '''[[ TSMC 130nm process ]]''' * 130nm SiGe process from Innovations for High Performance Microelectronics: '''[[ IHP 130nm process ]]''' * 350nm CMOS process from Austria Mikro Systeme: '''[[ AMS 350nm process ]]''' = Design entry using schematic capture = * Make sure you have set correct library. * Make sure you run virtuoso from the same folder as your 'cds.lib'-folder ('~/LIBRARY_VENDOR/') [[Design entry|Virtuoso schematic editor]] = Simulation = [[Testbench|Virtuoso Testbench]] = Layout = [[Layout XL and IHP SG13S]] =Helpful stuff= [[MikroserverSetup]] - setup for easy connection to the mikroservers and Cadence Virtuoso [[ Transistor operating point printer ]] - Script to extract transistor operating point parameters after simulation. [[DCoperatingparameters]] - Guide for showing transistor operating points in the schematic [[ ADEXL-butterfly-curves ]] - Howto make DC butterfly curves easily. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 4a6de1a6e973fa7c759aedc42643846998aff1f1 Design entry 0 694 2870 2022-09-06T08:05:42Z Are033 82 Created page with "Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == In the log window, choose "File > New > Library". In the "New Library" dialog box, you must g..." wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] 403ba06d035e33c0dc9177a55cd2c729ac3ce764 File:Start virt.png 6 697 2873 2022-09-13T08:44:03Z Are033 82 wikitext text/x-wiki starting 9493af057b02387d97de1cd6b474270b6a80d658 Design entry 0 694 2874 2870 2022-09-13T08:45:20Z Are033 82 wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == Start Cadence virtuoso environment by executing 'virtuoso &' from the directory where cds.lib file is located. Virtuoso starts with screen shown below:- [[File:Start virt.png|600px|Starting screen of virtuoso environment.]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] 5d9e69073fe4d5e6bd1221849c1dfa2ab08330db 2876 2874 2022-09-13T08:48:32Z Are033 82 /* Getting started */ wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == Start Cadence virtuoso environment by executing 'virtuoso &' from the directory where cds.lib file is located. Virtuoso starts with screen shown below:- [[File:Start virt.png|600px|Starting screen of virtuoso environment.]] Select 'Library manager' from 'Tools' in virtuoso environment --> Library manager starts with screen shown below:- [[File:Libmanager basic.png|600px|Starting screen of library manager]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] d68d8028c8477bcc5c13bb1a159ffd5db6b00066 2878 2876 2022-09-14T09:08:11Z Are033 82 /* Getting started */ wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == Start Cadence virtuoso environment by executing 'virtuoso &' from the directory where cds.lib file is located. Virtuoso starts with screen shown below:- [[File:Start virt.png|800px|Starting screen of virtuoso environment.]] Select 'Library manager' from 'Tools' in virtuoso environment --> Library manager starts with screen shown below:- [[File:Libmanager basic.png|800px|Starting screen of library manager]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:Invert 1.png|800px|Schematics of inverter in Cadence virtuoso]] e866e5568b13ca61c6338ebc0bdb447724f73408 2879 2878 2022-09-14T09:11:29Z Are033 82 wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == Start Cadence virtuoso environment by executing 'virtuoso &' from the directory where cds.lib file is located. Virtuoso starts with screen shown below:- [[File:Start virt.png|800px|Starting screen of virtuoso environment.]] Select 'Library manager' from 'Tools' in virtuoso environment --> Library manager starts with screen shown below:- [[File:Libmanager basic.png|800px|Starting screen of library manager]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:Invert 1.png|800px|Schematics of inverter in Cadence virtuoso]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. 273eb3c782b8dc5a9d2f8c2c6db261ad7169bf63 2880 2879 2022-09-14T09:29:13Z Are033 82 wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == Start Cadence virtuoso environment by executing 'virtuoso &' from the directory where cds.lib file is located. Virtuoso starts with screen shown below:- [[File:Start virt.png|800px|Starting screen of virtuoso environment.]] Select 'Library manager' from 'Tools' in virtuoso environment --> Library manager starts with screen shown below:- [[File:Libmanager basic.png|800px|Starting screen of library manager]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:Invert 1.png|800px|Schematics of inverter in Cadence virtuoso]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. ==Simulating the design== # Open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 94748017500682b45077f292a825d8048a53a9d7 2883 2880 2022-09-28T09:09:07Z Are033 82 /* Simulating the design */ wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == Start Cadence virtuoso environment by executing 'virtuoso &' from the directory where cds.lib file is located. Virtuoso starts with screen shown below:- [[File:Start virt.png|800px|Starting screen of virtuoso environment.]] Select 'Library manager' from 'Tools' in virtuoso environment --> Library manager starts with screen shown below:- [[File:Libmanager basic.png|800px|Starting screen of library manager]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:Invert 1.png|800px|Schematics of inverter in Cadence virtuoso]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. ==Simulating the design== # Open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|400px]] Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". # Note ratio between sizes of PMOS and NOMS, repeat simulation and observe changes in response for 4 different sizing ratios for example output waveforms for transient response of two different sizing ratios is shown below: [[File:PN ratio 1.png|800px|Transient response for PMOS NMOS size ratio=1]] [[File:PN ratio 4.png|800px|Transient response for PMOS NMOS size ratio=4]] ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 1e64d79d9c45da79e322c61d3aa7f33063473a65 2884 2883 2022-09-28T09:15:47Z Are033 82 /* Simulating the design */ wikitext text/x-wiki Copied/WiP (based on) from TSMC 180 flow of current wiki == Getting started == Start Cadence virtuoso environment by executing 'virtuoso &' from the directory where cds.lib file is located. Virtuoso starts with screen shown below:- [[File:Start virt.png|800px|Starting screen of virtuoso environment.]] Select 'Library manager' from 'Tools' in virtuoso environment --> Library manager starts with screen shown below:- [[File:Libmanager basic.png|800px|Starting screen of library manager]] In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:Invert 1.png|800px|Schematics of inverter in Cadence virtuoso]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. ==Simulating the design== # Open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|400px]] Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". # Note ratio between sizes of PMOS and NOMS, repeat simulation and observe changes in response for 4 different sizing ratios for example output waveforms for transient response of two different sizing ratios is shown below: [[File:PN ratio 1.png|800px|Transient response for PMOS NMOS size ratio=1]] [[File:PN ratio 4.png|800px|Transient response for PMOS NMOS size ratio=4]] Understand the difference caused in transient response by variations of MOSFET sizes and ratio between PMOS and NMOS for the designed inverter. ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 4e0b0c034c63de7bdcb41f14869332860e9e8c55 File:Libmanager basic.png 6 698 2875 2022-09-13T08:47:38Z Are033 82 wikitext text/x-wiki library manager 062305774ddeafffdaf8a0c46937148d4a47a1a0 File:Invert 1.png 6 699 2877 2022-09-14T09:05:38Z Are033 82 wikitext text/x-wiki inverter 3013bf740e78e6b108b7858998ee0ef0f128c041 File:PN ratio 1.png 6 700 2881 2022-09-28T09:04:19Z Are033 82 wikitext text/x-wiki Size of PMOS and NMOS is same: ratio=1 2208974a8189fd9efe017ff7ecf23ee0c8746faf File:PN ratio 4.png 6 701 2882 2022-09-28T09:07:29Z Are033 82 wikitext text/x-wiki Size ratio of PMOS and NMOS = 4 d75f4b10d5dff1b0a7e53b0adda67d74c5b8ecfe File:Example script.txt 6 702 2885 2022-09-29T08:04:02Z Are033 82 File uploaded with MsUpload wikitext text/x-wiki File uploaded with MsUpload a655f04485ff507c02499d137d22a0d3e0ea32c2 IHP 130nm process 0 472 2886 2867 2022-09-29T08:04:37Z Are033 82 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver: ssh -X mikroserver5 The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/cadence/2019-20/scripts/analog.sh cd ~/ihp/cds/ source /eda/design_kits/ihp_sg13/sh.cadence To start Cadence Virtuoso : virtuoso & Example script [[:File:example_script.txt]] to run from_ "user"/ihp/cds/ To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] = Before starting designing = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Make sure that your web browser is closed or started from the mikroserver, else the file will not be found. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] 56946367b43bdab534c4e1e1177a38cdfd6e977d 2907 2886 2024-05-30T11:47:50Z Nfyku 4 wikitext text/x-wiki =Cadence design with IHP 130nm process= ==Starting up the IHP SG13S Design Kit== The following steps describe how to install the Process Design Kit and start a new design. Log on to the mikroserver of choise ssh -X mikroserver The preferred shell is bash. When using another shell it will be necessary to change the installation routine and modify the initialization script accordingly. The '''first time''' you are using the IHP design kit you should copy the user environment design to your chosen parent directory (e.g ~/ihp) cp -rp /eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/work/skel ~/ihp Change sh.cadence in ~/ihp/cds to suit your needs. In particular you must define $IHP_TECH and $PROJECT according to your local environment. Then set general and user Cadence environment variables by doing: source /eda/design_kits/ihp_sg13/sh.cadence cd ~/ihp/cds/ source /eda/design_kits/ihp_sg13/sh.cadence To start Cadence Virtuoso : virtuoso & Example script [[:File:example_script.txt]] to run from_ "user"/ihp/cds/ To avoid having to do this every time try to set up your environment like described in [[MikroserverSetup]] = Before starting designing = Read the Design Kit User Guide. It can be found on the SG13SFeatures tab on the Virtuoso console window, or in the folder "/eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/pdf/" on the mikroserver. Make sure that your web browser is closed or started from the mikroserver, else the file will not be found. Other documents are found in "eda/design_kits/ihp_sg13/SG13S_618_rev1.12.0/doc/html/" [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] [[Category:Cadence_Virtuoso]] a92ac0d91fdebef371d1455e6d4abff55f896a35 Strålevern 0 572 2887 2845 2022-10-27T06:21:19Z Sya081 50 /* List of sealed sources at the IFT */ wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. ==List of sealed sources at the IFT== ===Storage 4=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 4 #1 | <sup>241</sup>Am | 27 | 1 000 | 2006 | 458 y | 60 keV gamma | OI428/Code: AMRB 13788 |- | 2 | Storage 4 #2 | <sup>57</sup>Co | 100 | 3 700 | 2006 | 272 d | 122 keV gamma | Code: CTR 8252 |- | 3 | Storage 4 #3 | <sup>133</sup>Ba | 100 | 3 700 | 2006 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Code: BDR 8252 |- | 4 | Storage 4 #4 | <sup>155</sup>Eu | 100 | 3 700 | 1993 | 4.8 y | 105 keV gamma | |- | 5 | Storage 4 #5 | <sup>226</sup>Ra | 2.7 | 100 | ~1970 | 1 600 y | 186 keV gamma | |- | 6 | Storage 4 #6 | <sup>137</sup>Cs | 60 | 2 200 | 1986 | 30 y | 662 keV gamma | |- | 7 | Storage 4 #7 | <sup>241</sup>Am | 3 000 | 100 000 | 1977 | 458 y | 60 keV gamma | UB/FIB 539 |- | 8 | Storage 4 #8 | <sup>241</sup>Am | 10 000 | 370 000 | 1987 | 458 y | | Variable X-ray source |- | 9 | Storage 4 #9 | <sup>55</sup>Fe | 20 000 | 740 000 | N/A | 2.7 y | X-rays | Decayed |- | 10 | Storage 4 #10 | <sup>109</sup>Cd | 1 | 37 | 2011 | 427 d | 88 keV gamma | Calibr. Set Spectrum Techniques |- | 11 | Storage 4 #11 | <sup>57</sup>Co | 1 | 37 | 2011 | 272 d | 122 keV gamma | Calibr. Set Spectrum Techniques |- | 12 | Storage 4 #12 | <sup>133</sup>Ba | 1 | 37 | 2011 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. Set Spectrum Techniques |- | 13 | Storage 4 #13 | <sup>60</sup>Co | 1 | 37 | 2011 | 5.3 y | 1 173, 1 333 keV gamma | Calibr. Set Spectrum Techniques |- | 14 | Storage 4 #14 | <sup>137</sup>Cs | 1 | 37 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 15 | Storage 4 #15 | <sup>22</sup>Na | 1 | 37 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 16 | Storage 4 #16 | <sup>137</sup>Cs<sup>65</sup>Zn | 1 | 37 | 2011 | 30 y + 244 d | 662 + 1 116 keV gamma | Calibr. Set Spectrum Techniques |- | 17 | Storage 4 #17 | <sup>54</sup>Mn | 1 | 37 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 18 | Storage 4 #18 | <sup>137</sup>Cs | 10 | 370 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 19 | Storage 4 #19 | <sup>22</sup>Na | 10 | 370 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 20 | Storage 4 #20 | <sup>54</sup>Mn | 10 | 370 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 21 | Storage 4 #21 | <sup>133</sup>Ba | 10 | 370 | 2012 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. source Eckert & Ziegler |- | 22 | Storage 4 #22 | <sup>241</sup>Am | 1 | 37 | 1990 | 458 y | 60 keV gamma | Laborel box (ruined and sagregated for disposal) |- | 23 | Storage 4 #23 | <sup>109</sup>Cd | 1 | 37 | 1990 | 427 d | 88 keV gamma | Laborel box |- | 24 | Storage 4 #24 | <sup>139</sup>Ce | 1 | 37 | 1990 | 138 d | 166 keV gamma | Laborel box |- | 25 | Storage 4 #25 | <sup>57</sup>Co | 1 | 37 | 1990 | 272 d | 122 keV gamma | Laborel box |- | 26 | Storage 4 #26 | <sup>137</sup>Cs | 1 | 37 | 1990 | 30 y | 662 keV gamma | Laborel box |- | 27 | Storage 4 #27 | <sup>51</sup>Cr | 1 | 37 | 1990 | 27 d | 320 keV gamma | Laborel box |- | 28 | Storage 4 #28 | <sup>54</sup>Mn | 1 | 37 | 1990 | 312 d | 835 keV gamma | Laborel box |- | 29 | Storage 4 #29 | <sup>113</sup>Sn | 1 | 37 | 1990 | 115 d | 255 keV gamma | Laborel box |- | 30 | Storage 4 #30 | <sup>85</sup>Sr | 1 | 37 | 1990 | 65 d | 355 keV gamma | Laborel box |- | 31 | Storage 4 #31 | <sup>65</sup>Zn | 1 | 37 | 1990 | 244 d | 1 116 keV gamma | Laborel box |- | 32 | Storage 4 #32 | <sup>133</sup>Ba | 4 000 | 148 000 | 2014 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Eckert & Ziegler, Brass holder |- | 33 | Storage 4 #33 | <sup>90</sup>Sr | 54 | 2 010 | 1993 | 29 y | e<sup>-</sup> | DESY |- | 34 | Storage 4 #34 | <sup>55</sup>Fe | 1 000 | 37 000 | 2014 | 2.7 y | X-rays | UiB# 0218698 |- | 35 | Storage 4 #35a | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- | 36 | Storage 4 #35b | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- |} ===Storage 3=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 3 #1 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 2 | Storage 3 #2 | <sup>133</sup>Ba | 1 | 37 | 2013 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | |- | 3 | Storage 3 #3 | <sup>22</sup>Na | 1 | 37 | 2013 | 2.6 y | 511, 1 275 keV gamma | |- | 4 | Storage 3 #4 | <sup>57</sup>Co | 1 | 37 | 2013 | 272 d | 122 keV gamma | |- | 5 | Storage 3 #5a | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 6 | Storage 3 #5b | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 7 | Storage 3 #6 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 3 #7 | <sup>241</sup>Am | 1 | 37 | 1976 | 458 y | Alpha + 60 keV gamma | Glass tube set |- | 9 | Storage 3 #8 | <sup>90</sup>Sr | 1 | 37 | 1976 | 29 y | e<sup>-</sup> | Glass tube set |- | 10 | Storage 3 #9 | <sup>55</sup>Fe | 10 | 370 | 1976 | 30 y | 662 keV gamma | Glass tube set |- | 11 | Storage 3 #10 | <sup>106</sup>Ru | 2.7 | 100 | 2000 | 374 d | e<sup>-</sup> | |- | 12 | Storage 3 #11 | <sup>241</sup>Am | 10 | 370 | 1975 | 458 y | Alpha + 60 keV gamma | ORTEC AM-1U, S/N M-1343, act. 0.088 |- |} ===Storage 2=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 2 #1a | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 2 | Storage 2 #1b | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 3 | Storage 2 #1c | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 4 | Storage 2 #1d | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 5 | Storage 2 #1e | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 6 | Storage 2 #1f | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 7 | Storage 2 #2 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 2 #3a | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 9 | Storage 2 #3b | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 10 | Storage 2 #4a | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 11 | Storage 2 #4b | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 12 | Storage 2 #5a | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 13 | Storage 2 #5b | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 14 | Storage 2 #6 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 15 | Storage 2 #7 | <sup>152</sup>Eu | 0.04 | 1.5 | 2006 | 13.5 y | Many gamma lines | Sealed Liquid |- | 16 | Storage 2 #8a | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 17 | Storage 2 #8b | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 18 | Storage 2 #8c | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 19 | Storage 2 #9a | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 20 | Storage 2 #9b | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 21 | Storage 2 #9c | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 22 | Storage 2 #9d | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 23 | Storage 2 #10 | <sup>152</sup>Eu | 1 | 37 | 2005 | 13.5 y | Many gamma lines | |- | 24 | Storage 2 #11a | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 25 | Storage 2 #11b | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 26 | Storage 2 #11c | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 27 | Storage 2 #11d | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 28 | Storage 2 #12a | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 29 | Storage 2 #12b | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 30 | Storage 2 #12c | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 31 | Storage 2 #13 | <sup>241</sup>Am | 0.24 | 9 | N/A | 458 y | 60 keV gamma | GDM 625 |- | 32 | Storage 2 #14 | <sup>137</sup>Cs | 1.22 | 45 | N/A | 30 y | 662 keV gamma | GDM 134 |- | 33 | Storage 2 #15 | UO<sub>2</sub> | N/A | N/A | N/A | N/A | N/A | Nuclear fuel pellet (black cylinder in epoxy cube) |- |} ===Storage 1=== ====White==== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 1W #1 | <sup>241</sup>Am | 10 000 | 370 000 | | 458 y | X-rays | Variable X-ray source |- | 2 | Storage 1W #2 | <sup>241</sup>Am | 10 | 370 | 1993 | 458 y | 60 keV gamma | DA289 written on the source |- | 3 | Storage 1W #3 | <sup>60</sup>Co | 10 | 370 | 1970 | 10.5 y | 1 173, 1 333 keV gamma | A943F |- | 4 | Storage 1W #4 | <sup>147</sup>Pm | 10 000 | 370 000 | 1974 | 2.6 y | 76, 198 keV gamma | A1124/N11958 |- | 5 | Storage 1W #5 | <sup>137</sup>Cs | 10 | 370 | | 30 y | 662 keV gamma | S/N 15319; A919F |- | 6 | Storage 1W #6 | <sup>60</sup>Co | 1 | 37 | | 10.5 y | 1 173, 1 333 keV gamma | S/N 811-L-1 |- | 7 | Storage 1W #7 | <sup>241</sup>Am | 0.1 | 3.7 | 1966 | 458 y | 60 keV gamma | A922F; S/N M954 Ortec |- | 8 | Storage 1W #8 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 9 | Storage 1W #9 | <sup>137</sup>Cs | 100 | 3 700 | 1984 | 30 y | 662 keV gamma | |- | 10 | Storage 1W #10 | <sup>241</sup>Am | 14 000 | 518 000 | 1984 | 458 y | 60 keV gamma | M55005 |- | 11 | Storage 1W #11 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 12 | Storage 1W #12 | <sup>226</sup>Ra | 5-10 | 185-370 | 1970 | 1 600 y | 186 keV gamma | A859F; Leybold in a jar |- | 13 | Storage 1W #13 | <sup>137</sup>Cs | <10 | <370 | 2005 | 30 y | 662 keV gamma | Isotope generator |- | 14 | Storage 1W #14a | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 15 | Storage 1W #14b | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 16 | Storage 1W #14c | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 17 | Storage 1W #15 | <sup>90</sup>Sr | 2 000 | 74 000 | 1987 | 29 y | e<sup>-</sup> | Amersham (in a blue cylindrical collimator) |- | 18 | Storage 1W #16 | | | | 1945 | | | Hiroshima dust |- | 19 | | | 0 | 0 | 2005 | | | Eluting solution for Tilf #13 Isotope generator |- |} ====Black==== {| class="wikitable" |- ! Item ! Source ID ! Activity, counts/s* ! Note |- | 1 | Storage 1B #1 | ~20 | Storage 1B R. 1 |- | 2 | Storage 1B #2 | ~120 | Storage 1B G. 1 |- | 3 | Storage 1B #3 | ~60 | Storage 1B G. 2 |- | 4 | Storage 1B #4 | ~100 | Storage 1B G. 3 |- | 5 | Storage 1B #5 | ~10 | Storage 1B G. 4 |- | 6 | Storage 1B #6 | ~10 | Storage 1B G. 5 |- | 7 | Storage 1B #7 | ~0 | Storage 1B G. 6 |- | 8 | Storage 1B #8 | ~220 | Storage 1B G. 7 |- | 9 | Storage 1B #9 | ~150 | Storage 1B G. 8 |- | 10 | Storage 1B #10 | ~10 | Storage 1B G. 9 |- | 11 | Storage 1B #11 | ~350 | Storage 1B G. 10 |- | 12 | Storage 1B #12 | ~500 | Storage 1B G. 11 |- | 13 | Storage 1B #13 | ~1 000 | Storage 1B G. 12 |- |} <nowiki>*</nowiki>Activity measured with an 1" NaI(Tl) crystal 761f6cdfd55226d62c0b3c8906518b22bf372043 2892 2887 2022-11-25T14:46:05Z Sya081 50 wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. ==List of sealed sources at the IFT== ===Storage 4=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 4 #1 | <sup>241</sup>Am | 27 | 1 000 | 2006 | 458 y | 60 keV gamma | OI428/Code: AMRB 13788 |- | 2 | Storage 4 #2 | <sup>57</sup>Co | 100 | 3 700 | 2006 | 272 d | 122 keV gamma | Code: CTR 8252 |- | 3 | Storage 4 #3 | <sup>133</sup>Ba | 100 | 3 700 | 2006 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Code: BDR 8252 |- | 4 | Storage 4 #4 | <sup>155</sup>Eu | 100 | 3 700 | 1993 | 4.8 y | 105 keV gamma | |- | 5 | Storage 4 #5 | <sup>226</sup>Ra | 2.7 | 100 | ~1970 | 1 600 y | 186 keV gamma | |- | 6 | Storage 4 #6 | <sup>137</sup>Cs | 60 | 2 200 | 1986 | 30 y | 662 keV gamma | |- | 7 | Storage 4 #7 | <sup>241</sup>Am | 3 000 | 100 000 | 1977 | 458 y | 60 keV gamma | UB/FIB 539 |- | 8 | Storage 4 #8 | <sup>241</sup>Am | 10 000 | 370 000 | 1987 | 458 y | | Variable X-ray source |- | 9 | Storage 4 #9 | <sup>55</sup>Fe | 20 000 | 740 000 | N/A | 2.7 y | X-rays | Decayed |- | 10 | Storage 4 #10 | <sup>109</sup>Cd | 1 | 37 | 2011 | 427 d | 88 keV gamma | Calibr. Set Spectrum Techniques |- | 11 | Storage 4 #11 | <sup>57</sup>Co | 1 | 37 | 2011 | 272 d | 122 keV gamma | Calibr. Set Spectrum Techniques |- | 12 | Storage 4 #12 | <sup>133</sup>Ba | 1 | 37 | 2011 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. Set Spectrum Techniques |- | 13 | Storage 4 #13 | <sup>60</sup>Co | 1 | 37 | 2011 | 5.3 y | 1 173, 1 333 keV gamma | Calibr. Set Spectrum Techniques |- | 14 | Storage 4 #14 | <sup>137</sup>Cs | 1 | 37 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 15 | Storage 4 #15 | <sup>22</sup>Na | 1 | 37 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 16 | Storage 4 #16 | <sup>137</sup>Cs<sup>65</sup>Zn | 1 | 37 | 2011 | 30 y + 244 d | 662 + 1 116 keV gamma | Calibr. Set Spectrum Techniques |- | 17 | Storage 4 #17 | <sup>54</sup>Mn | 1 | 37 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 18 | Storage 4 #18 | <sup>137</sup>Cs | 10 | 370 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 19 | Storage 4 #19 | <sup>22</sup>Na | 10 | 370 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 20 | Storage 4 #20 | <sup>54</sup>Mn | 10 | 370 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 21 | Storage 4 #21 | <sup>133</sup>Ba | 10 | 370 | 2012 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. source Eckert & Ziegler |- | 22 | Storage 4 #22 | <sup>241</sup>Am | 1 | 37 | 1990 | 458 y | 60 keV gamma | Laborel box (ruined and sagregated for disposal) |- | 23 | Storage 4 #23 | <sup>109</sup>Cd | 1 | 37 | 1990 | 427 d | 88 keV gamma | Laborel box |- | 24 | Storage 4 #24 | <sup>139</sup>Ce | 1 | 37 | 1990 | 138 d | 166 keV gamma | Laborel box |- | 25 | Storage 4 #25 | <sup>57</sup>Co | 1 | 37 | 1990 | 272 d | 122 keV gamma | Laborel box |- | 26 | Storage 4 #26 | <sup>137</sup>Cs | 1 | 37 | 1990 | 30 y | 662 keV gamma | Laborel box |- | 27 | Storage 4 #27 | <sup>51</sup>Cr | 1 | 37 | 1990 | 27 d | 320 keV gamma | Laborel box |- | 28 | Storage 4 #28 | <sup>54</sup>Mn | 1 | 37 | 1990 | 312 d | 835 keV gamma | Laborel box |- | 29 | Storage 4 #29 | <sup>113</sup>Sn | 1 | 37 | 1990 | 115 d | 255 keV gamma | Laborel box |- | 30 | Storage 4 #30 | <sup>85</sup>Sr | 1 | 37 | 1990 | 65 d | 355 keV gamma | Laborel box |- | 31 | Storage 4 #31 | <sup>65</sup>Zn | 1 | 37 | 1990 | 244 d | 1 116 keV gamma | Laborel box |- | 32 | Storage 4 #32 | <sup>133</sup>Ba | 4 000 | 148 000 | 2014 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Eckert & Ziegler, Brass holder |- | 33 | Storage 4 #33 | <sup>90</sup>Sr | 54 | 2 010 | 1993 | 29 y | e<sup>-</sup> | DESY |- | 34 | Storage 4 #34 | <sup>55</sup>Fe | 1 000 | 37 000 | 2014 | 2.7 y | X-rays | UiB# 0218698 |- | 35 | Storage 4 #35a | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- | 36 | Storage 4 #35b | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- |} ===Storage 3=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 3 #1 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 2 | Storage 3 #2 | <sup>133</sup>Ba | 1 | 37 | 2013 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | |- | 3 | Storage 3 #3 | <sup>22</sup>Na | 1 | 37 | 2013 | 2.6 y | 511, 1 275 keV gamma | |- | 4 | Storage 3 #4 | <sup>57</sup>Co | 1 | 37 | 2013 | 272 d | 122 keV gamma | |- | 5 | Storage 3 #5a | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 6 | Storage 3 #5b | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 7 | Storage 3 #6 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 3 #7 | <sup>241</sup>Am | 1 | 37 | 1976 | 458 y | Alpha + 60 keV gamma | Glass tube set |- | 9 | Storage 3 #8 | <sup>90</sup>Sr | 1 | 37 | 1976 | 29 y | e<sup>-</sup> | Glass tube set |- | 10 | Storage 3 #9 | <sup>55</sup>Fe | 10 | 370 | 1976 | 30 y | 662 keV gamma | Glass tube set |- | 11 | Storage 3 #10 | <sup>106</sup>Ru | 2.7 | 100 | 2000 | 374 d | e<sup>-</sup> | |- | 12 | Storage 3 #11 | <sup>241</sup>Am | 10 | 370 | 1975 | 458 y | Alpha + 60 keV gamma | ORTEC AM-1U, S/N M-1343, act. 0.088 |- | 13 | Storage 3 #12 | <sup>90</sup>Sr | 2 000 | 74 000 | 2022 | 29 y | e<sup>-</sup> | VZ-3721-001 Capsule, Nominal |- |} ===Storage 2=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 2 #1a | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 2 | Storage 2 #1b | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 3 | Storage 2 #1c | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 4 | Storage 2 #1d | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 5 | Storage 2 #1e | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 6 | Storage 2 #1f | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 7 | Storage 2 #2 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 2 #3a | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 9 | Storage 2 #3b | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 10 | Storage 2 #4a | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 11 | Storage 2 #4b | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 12 | Storage 2 #5a | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 13 | Storage 2 #5b | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 14 | Storage 2 #6 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 15 | Storage 2 #7 | <sup>152</sup>Eu | 0.04 | 1.5 | 2006 | 13.5 y | Many gamma lines | Sealed Liquid |- | 16 | Storage 2 #8a | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 17 | Storage 2 #8b | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 18 | Storage 2 #8c | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 19 | Storage 2 #9a | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 20 | Storage 2 #9b | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 21 | Storage 2 #9c | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 22 | Storage 2 #9d | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 23 | Storage 2 #10 | <sup>152</sup>Eu | 1 | 37 | 2005 | 13.5 y | Many gamma lines | |- | 24 | Storage 2 #11a | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 25 | Storage 2 #11b | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 26 | Storage 2 #11c | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 27 | Storage 2 #11d | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 28 | Storage 2 #12a | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 29 | Storage 2 #12b | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 30 | Storage 2 #12c | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 31 | Storage 2 #13 | <sup>241</sup>Am | 0.24 | 9 | N/A | 458 y | 60 keV gamma | GDM 625 |- | 32 | Storage 2 #14 | <sup>137</sup>Cs | 1.22 | 45 | N/A | 30 y | 662 keV gamma | GDM 134 |- | 33 | Storage 2 #15 | UO<sub>2</sub> | N/A | N/A | N/A | N/A | N/A | Nuclear fuel pellet (black cylinder in epoxy cube) |- |} ===Storage 1=== ====White==== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 1W #1 | <sup>241</sup>Am | 10 000 | 370 000 | | 458 y | X-rays | Variable X-ray source |- | 2 | Storage 1W #2 | <sup>241</sup>Am | 10 | 370 | 1993 | 458 y | 60 keV gamma | DA289 written on the source |- | 3 | Storage 1W #3 | <sup>60</sup>Co | 10 | 370 | 1970 | 10.5 y | 1 173, 1 333 keV gamma | A943F |- | 4 | Storage 1W #4 | <sup>147</sup>Pm | 10 000 | 370 000 | 1974 | 2.6 y | 76, 198 keV gamma | A1124/N11958 |- | 5 | Storage 1W #5 | <sup>137</sup>Cs | 10 | 370 | | 30 y | 662 keV gamma | S/N 15319; A919F |- | 6 | Storage 1W #6 | <sup>60</sup>Co | 1 | 37 | | 10.5 y | 1 173, 1 333 keV gamma | S/N 811-L-1 |- | 7 | Storage 1W #7 | <sup>241</sup>Am | 0.1 | 3.7 | 1966 | 458 y | 60 keV gamma | A922F; S/N M954 Ortec |- | 8 | Storage 1W #8 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 9 | Storage 1W #9 | <sup>137</sup>Cs | 100 | 3 700 | 1984 | 30 y | 662 keV gamma | |- | 10 | Storage 1W #10 | <sup>241</sup>Am | 14 000 | 518 000 | 1984 | 458 y | 60 keV gamma | M55005 |- | 11 | Storage 1W #11 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 12 | Storage 1W #12 | <sup>226</sup>Ra | 5-10 | 185-370 | 1970 | 1 600 y | 186 keV gamma | A859F; Leybold in a jar |- | 13 | Storage 1W #13 | <sup>137</sup>Cs | <10 | <370 | 2005 | 30 y | 662 keV gamma | Isotope generator |- | 14 | Storage 1W #14a | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 15 | Storage 1W #14b | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 16 | Storage 1W #14c | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 17 | Storage 1W #15 | <sup>90</sup>Sr | 2 000 | 74 000 | 1987 | 29 y | e<sup>-</sup> | Amersham (in a blue cylindrical collimator) |- | 18 | Storage 1W #16 | | | | 1945 | | | Hiroshima dust |- | 19 | | | 0 | 0 | 2005 | | | Eluting solution for Tilf #13 Isotope generator |- |} ====Black==== {| class="wikitable" |- ! Item ! Source ID ! Activity, counts/s* ! Note |- | 1 | Storage 1B #1 | ~20 | Storage 1B R. 1 |- | 2 | Storage 1B #2 | ~120 | Storage 1B G. 1 |- | 3 | Storage 1B #3 | ~60 | Storage 1B G. 2 |- | 4 | Storage 1B #4 | ~100 | Storage 1B G. 3 |- | 5 | Storage 1B #5 | ~10 | Storage 1B G. 4 |- | 6 | Storage 1B #6 | ~10 | Storage 1B G. 5 |- | 7 | Storage 1B #7 | ~0 | Storage 1B G. 6 |- | 8 | Storage 1B #8 | ~220 | Storage 1B G. 7 |- | 9 | Storage 1B #9 | ~150 | Storage 1B G. 8 |- | 10 | Storage 1B #10 | ~10 | Storage 1B G. 9 |- | 11 | Storage 1B #11 | ~350 | Storage 1B G. 10 |- | 12 | Storage 1B #12 | ~500 | Storage 1B G. 11 |- | 13 | Storage 1B #13 | ~1 000 | Storage 1B G. 12 |- |} <nowiki>*</nowiki>Activity measured with an 1" NaI(Tl) crystal 79247abfc3a94910c9f25ee028d3a2af250d2fa1 2893 2892 2022-11-25T14:53:55Z Sya081 50 /* Storage 3 */ wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. ==List of sealed sources at the IFT== ===Storage 4=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 4 #1 | <sup>241</sup>Am | 27 | 1 000 | 2006 | 458 y | 60 keV gamma | OI428/Code: AMRB 13788 |- | 2 | Storage 4 #2 | <sup>57</sup>Co | 100 | 3 700 | 2006 | 272 d | 122 keV gamma | Code: CTR 8252 |- | 3 | Storage 4 #3 | <sup>133</sup>Ba | 100 | 3 700 | 2006 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Code: BDR 8252 |- | 4 | Storage 4 #4 | <sup>155</sup>Eu | 100 | 3 700 | 1993 | 4.8 y | 105 keV gamma | |- | 5 | Storage 4 #5 | <sup>226</sup>Ra | 2.7 | 100 | ~1970 | 1 600 y | 186 keV gamma | |- | 6 | Storage 4 #6 | <sup>137</sup>Cs | 60 | 2 200 | 1986 | 30 y | 662 keV gamma | |- | 7 | Storage 4 #7 | <sup>241</sup>Am | 3 000 | 100 000 | 1977 | 458 y | 60 keV gamma | UB/FIB 539 |- | 8 | Storage 4 #8 | <sup>241</sup>Am | 10 000 | 370 000 | 1987 | 458 y | | Variable X-ray source |- | 9 | Storage 4 #9 | <sup>55</sup>Fe | 20 000 | 740 000 | N/A | 2.7 y | X-rays | Decayed |- | 10 | Storage 4 #10 | <sup>109</sup>Cd | 1 | 37 | 2011 | 427 d | 88 keV gamma | Calibr. Set Spectrum Techniques |- | 11 | Storage 4 #11 | <sup>57</sup>Co | 1 | 37 | 2011 | 272 d | 122 keV gamma | Calibr. Set Spectrum Techniques |- | 12 | Storage 4 #12 | <sup>133</sup>Ba | 1 | 37 | 2011 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. Set Spectrum Techniques |- | 13 | Storage 4 #13 | <sup>60</sup>Co | 1 | 37 | 2011 | 5.3 y | 1 173, 1 333 keV gamma | Calibr. Set Spectrum Techniques |- | 14 | Storage 4 #14 | <sup>137</sup>Cs | 1 | 37 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 15 | Storage 4 #15 | <sup>22</sup>Na | 1 | 37 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 16 | Storage 4 #16 | <sup>137</sup>Cs<sup>65</sup>Zn | 1 | 37 | 2011 | 30 y + 244 d | 662 + 1 116 keV gamma | Calibr. Set Spectrum Techniques |- | 17 | Storage 4 #17 | <sup>54</sup>Mn | 1 | 37 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 18 | Storage 4 #18 | <sup>137</sup>Cs | 10 | 370 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 19 | Storage 4 #19 | <sup>22</sup>Na | 10 | 370 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 20 | Storage 4 #20 | <sup>54</sup>Mn | 10 | 370 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 21 | Storage 4 #21 | <sup>133</sup>Ba | 10 | 370 | 2012 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. source Eckert & Ziegler |- | 22 | Storage 4 #22 | <sup>241</sup>Am | 1 | 37 | 1990 | 458 y | 60 keV gamma | Laborel box (ruined and sagregated for disposal) |- | 23 | Storage 4 #23 | <sup>109</sup>Cd | 1 | 37 | 1990 | 427 d | 88 keV gamma | Laborel box |- | 24 | Storage 4 #24 | <sup>139</sup>Ce | 1 | 37 | 1990 | 138 d | 166 keV gamma | Laborel box |- | 25 | Storage 4 #25 | <sup>57</sup>Co | 1 | 37 | 1990 | 272 d | 122 keV gamma | Laborel box |- | 26 | Storage 4 #26 | <sup>137</sup>Cs | 1 | 37 | 1990 | 30 y | 662 keV gamma | Laborel box |- | 27 | Storage 4 #27 | <sup>51</sup>Cr | 1 | 37 | 1990 | 27 d | 320 keV gamma | Laborel box |- | 28 | Storage 4 #28 | <sup>54</sup>Mn | 1 | 37 | 1990 | 312 d | 835 keV gamma | Laborel box |- | 29 | Storage 4 #29 | <sup>113</sup>Sn | 1 | 37 | 1990 | 115 d | 255 keV gamma | Laborel box |- | 30 | Storage 4 #30 | <sup>85</sup>Sr | 1 | 37 | 1990 | 65 d | 355 keV gamma | Laborel box |- | 31 | Storage 4 #31 | <sup>65</sup>Zn | 1 | 37 | 1990 | 244 d | 1 116 keV gamma | Laborel box |- | 32 | Storage 4 #32 | <sup>133</sup>Ba | 4 000 | 148 000 | 2014 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Eckert & Ziegler, Brass holder |- | 33 | Storage 4 #33 | <sup>90</sup>Sr | 54 | 2 010 | 1993 | 29 y | e<sup>-</sup> | DESY |- | 34 | Storage 4 #34 | <sup>55</sup>Fe | 1 000 | 37 000 | 2014 | 2.7 y | X-rays | UiB# 0218698 |- | 35 | Storage 4 #35a | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- | 36 | Storage 4 #35b | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- |} ===Storage 3=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 3 #1 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 2 | Storage 3 #2 | <sup>133</sup>Ba | 1 | 37 | 2013 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | |- | 3 | Storage 3 #3 | <sup>22</sup>Na | 1 | 37 | 2013 | 2.6 y | 511, 1 275 keV gamma | |- | 4 | Storage 3 #4 | <sup>57</sup>Co | 1 | 37 | 2013 | 272 d | 122 keV gamma | |- | 5 | Storage 3 #5a | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 6 | Storage 3 #5b | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 7 | Storage 3 #6 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 3 #7 | <sup>241</sup>Am | 1 | 37 | 1976 | 458 y | Alpha + 60 keV gamma | Glass tube set |- | 9 | Storage 3 #8 | <sup>90</sup>Sr | 1 | 37 | 1976 | 29 y | e<sup>-</sup> | Glass tube set |- | 10 | Storage 3 #9 | <sup>55</sup>Fe | 10 | 370 | 1976 | 30 y | 662 keV gamma | Glass tube set |- | 11 | Storage 3 #10 | <sup>106</sup>Ru | 2.7 | 100 | 2000 | 374 d | e<sup>-</sup> | |- | 12 | Storage 3 #11 | <sup>241</sup>Am | 10 | 370 | 1975 | 458 y | Alpha + 60 keV gamma | ORTEC AM-1U, S/N M-1343, act. 0.088 |- | 13 | Storage 3 #12 | <sup>90</sup>Sr | 2 000 | 74 000 | 2022 | 29 y | e<sup>-</sup> | VZ-3721-001 Capsule, Nominal, Φ 8mm x 5mm |- |} ===Storage 2=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 2 #1a | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 2 | Storage 2 #1b | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 3 | Storage 2 #1c | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 4 | Storage 2 #1d | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 5 | Storage 2 #1e | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 6 | Storage 2 #1f | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 7 | Storage 2 #2 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 2 #3a | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 9 | Storage 2 #3b | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 10 | Storage 2 #4a | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 11 | Storage 2 #4b | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 12 | Storage 2 #5a | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 13 | Storage 2 #5b | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 14 | Storage 2 #6 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 15 | Storage 2 #7 | <sup>152</sup>Eu | 0.04 | 1.5 | 2006 | 13.5 y | Many gamma lines | Sealed Liquid |- | 16 | Storage 2 #8a | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 17 | Storage 2 #8b | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 18 | Storage 2 #8c | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 19 | Storage 2 #9a | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 20 | Storage 2 #9b | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 21 | Storage 2 #9c | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 22 | Storage 2 #9d | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 23 | Storage 2 #10 | <sup>152</sup>Eu | 1 | 37 | 2005 | 13.5 y | Many gamma lines | |- | 24 | Storage 2 #11a | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 25 | Storage 2 #11b | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 26 | Storage 2 #11c | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 27 | Storage 2 #11d | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 28 | Storage 2 #12a | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 29 | Storage 2 #12b | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 30 | Storage 2 #12c | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 31 | Storage 2 #13 | <sup>241</sup>Am | 0.24 | 9 | N/A | 458 y | 60 keV gamma | GDM 625 |- | 32 | Storage 2 #14 | <sup>137</sup>Cs | 1.22 | 45 | N/A | 30 y | 662 keV gamma | GDM 134 |- | 33 | Storage 2 #15 | UO<sub>2</sub> | N/A | N/A | N/A | N/A | N/A | Nuclear fuel pellet (black cylinder in epoxy cube) |- |} ===Storage 1=== ====White==== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 1W #1 | <sup>241</sup>Am | 10 000 | 370 000 | | 458 y | X-rays | Variable X-ray source |- | 2 | Storage 1W #2 | <sup>241</sup>Am | 10 | 370 | 1993 | 458 y | 60 keV gamma | DA289 written on the source |- | 3 | Storage 1W #3 | <sup>60</sup>Co | 10 | 370 | 1970 | 10.5 y | 1 173, 1 333 keV gamma | A943F |- | 4 | Storage 1W #4 | <sup>147</sup>Pm | 10 000 | 370 000 | 1974 | 2.6 y | 76, 198 keV gamma | A1124/N11958 |- | 5 | Storage 1W #5 | <sup>137</sup>Cs | 10 | 370 | | 30 y | 662 keV gamma | S/N 15319; A919F |- | 6 | Storage 1W #6 | <sup>60</sup>Co | 1 | 37 | | 10.5 y | 1 173, 1 333 keV gamma | S/N 811-L-1 |- | 7 | Storage 1W #7 | <sup>241</sup>Am | 0.1 | 3.7 | 1966 | 458 y | 60 keV gamma | A922F; S/N M954 Ortec |- | 8 | Storage 1W #8 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 9 | Storage 1W #9 | <sup>137</sup>Cs | 100 | 3 700 | 1984 | 30 y | 662 keV gamma | |- | 10 | Storage 1W #10 | <sup>241</sup>Am | 14 000 | 518 000 | 1984 | 458 y | 60 keV gamma | M55005 |- | 11 | Storage 1W #11 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 12 | Storage 1W #12 | <sup>226</sup>Ra | 5-10 | 185-370 | 1970 | 1 600 y | 186 keV gamma | A859F; Leybold in a jar |- | 13 | Storage 1W #13 | <sup>137</sup>Cs | <10 | <370 | 2005 | 30 y | 662 keV gamma | Isotope generator |- | 14 | Storage 1W #14a | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 15 | Storage 1W #14b | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 16 | Storage 1W #14c | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 17 | Storage 1W #15 | <sup>90</sup>Sr | 2 000 | 74 000 | 1987 | 29 y | e<sup>-</sup> | Amersham (in a blue cylindrical collimator) |- | 18 | Storage 1W #16 | | | | 1945 | | | Hiroshima dust |- | 19 | | | 0 | 0 | 2005 | | | Eluting solution for Tilf #13 Isotope generator |- |} ====Black==== {| class="wikitable" |- ! Item ! Source ID ! Activity, counts/s* ! Note |- | 1 | Storage 1B #1 | ~20 | Storage 1B R. 1 |- | 2 | Storage 1B #2 | ~120 | Storage 1B G. 1 |- | 3 | Storage 1B #3 | ~60 | Storage 1B G. 2 |- | 4 | Storage 1B #4 | ~100 | Storage 1B G. 3 |- | 5 | Storage 1B #5 | ~10 | Storage 1B G. 4 |- | 6 | Storage 1B #6 | ~10 | Storage 1B G. 5 |- | 7 | Storage 1B #7 | ~0 | Storage 1B G. 6 |- | 8 | Storage 1B #8 | ~220 | Storage 1B G. 7 |- | 9 | Storage 1B #9 | ~150 | Storage 1B G. 8 |- | 10 | Storage 1B #10 | ~10 | Storage 1B G. 9 |- | 11 | Storage 1B #11 | ~350 | Storage 1B G. 10 |- | 12 | Storage 1B #12 | ~500 | Storage 1B G. 11 |- | 13 | Storage 1B #13 | ~1 000 | Storage 1B G. 12 |- |} <nowiki>*</nowiki>Activity measured with an 1" NaI(Tl) crystal 8994bd9c5e711960270330a33f52e0fdee271e73 2899 2893 2023-12-15T14:04:06Z Sya081 50 wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. ==List of sealed sources at the IFT== ===Storage 4=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 4 #1 | <sup>241</sup>Am | 27 | 1 000 | 2006 | 458 y | 60 keV gamma | OI428/Code: AMRB 13788 |- | 2 | Storage 4 #2 | <sup>57</sup>Co | 100 | 3 700 | 2006 | 272 d | 122 keV gamma | Code: CTR 8252 |- | 3 | Storage 4 #3 | <sup>133</sup>Ba | 100 | 3 700 | 2006 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Code: BDR 8252 |- | 4 | Storage 4 #4 | <sup>155</sup>Eu | 100 | 3 700 | 1993 | 4.8 y | 105 keV gamma | |- | 5 | | | | | | | | |- | 6 | Storage 4 #6 | <sup>137</sup>Cs | 60 | 2 200 | 1986 | 30 y | 662 keV gamma | |- | 7 | Storage 4 #7 | <sup>241</sup>Am | 3 000 | 100 000 | 1977 | 458 y | 60 keV gamma | UB/FIB 539 |- | 8 | Storage 4 #8 | <sup>241</sup>Am | 10 000 | 370 000 | 1987 | 458 y | | Variable X-ray source |- | 9 | Storage 4 #9 | <sup>55</sup>Fe | 20 000 | 740 000 | N/A | 2.7 y | X-rays | Decayed |- | 10 | Storage 4 #10 | <sup>109</sup>Cd | 1 | 37 | 2011 | 427 d | 88 keV gamma | Calibr. Set Spectrum Techniques |- | 11 | Storage 4 #11 | <sup>57</sup>Co | 1 | 37 | 2011 | 272 d | 122 keV gamma | Calibr. Set Spectrum Techniques |- | 12 | Storage 4 #12 | <sup>133</sup>Ba | 1 | 37 | 2011 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. Set Spectrum Techniques |- | 13 | Storage 4 #13 | <sup>60</sup>Co | 1 | 37 | 2011 | 5.3 y | 1 173, 1 333 keV gamma | Calibr. Set Spectrum Techniques |- | 14 | Storage 4 #14 | <sup>137</sup>Cs | 1 | 37 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 15 | Storage 4 #15 | <sup>22</sup>Na | 1 | 37 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 16 | Storage 4 #16 | <sup>137</sup>Cs<sup>65</sup>Zn | 1 | 37 | 2011 | 30 y + 244 d | 662 + 1 116 keV gamma | Calibr. Set Spectrum Techniques |- | 17 | Storage 4 #17 | <sup>54</sup>Mn | 1 | 37 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 18 | Storage 4 #18 | <sup>137</sup>Cs | 10 | 370 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 19 | Storage 4 #19 | <sup>22</sup>Na | 10 | 370 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 20 | Storage 4 #20 | <sup>54</sup>Mn | 10 | 370 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 21 | Storage 4 #21 | <sup>133</sup>Ba | 10 | 370 | 2012 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. source Eckert & Ziegler |- | 22 | Storage 4 #22 | <sup>241</sup>Am | 1 | 37 | 1990 | 458 y | 60 keV gamma | Laborel box (ruined and sagregated for disposal) |- | 23 | Storage 4 #23 | <sup>109</sup>Cd | 1 | 37 | 1990 | 427 d | 88 keV gamma | Laborel box |- | 24 | Storage 4 #24 | <sup>139</sup>Ce | 1 | 37 | 1990 | 138 d | 166 keV gamma | Laborel box |- | 25 | Storage 4 #25 | <sup>57</sup>Co | 1 | 37 | 1990 | 272 d | 122 keV gamma | Laborel box |- | 26 | Storage 4 #26 | <sup>137</sup>Cs | 1 | 37 | 1990 | 30 y | 662 keV gamma | Laborel box |- | 27 | Storage 4 #27 | <sup>51</sup>Cr | 1 | 37 | 1990 | 27 d | 320 keV gamma | Laborel box |- | 28 | Storage 4 #28 | <sup>54</sup>Mn | 1 | 37 | 1990 | 312 d | 835 keV gamma | Laborel box |- | 29 | Storage 4 #29 | <sup>113</sup>Sn | 1 | 37 | 1990 | 115 d | 255 keV gamma | Laborel box |- | 30 | Storage 4 #30 | <sup>85</sup>Sr | 1 | 37 | 1990 | 65 d | 355 keV gamma | Laborel box |- | 31 | Storage 4 #31 | <sup>65</sup>Zn | 1 | 37 | 1990 | 244 d | 1 116 keV gamma | Laborel box |- | 32 | Storage 4 #32 | <sup>133</sup>Ba | 4 000 | 148 000 | 2014 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Eckert & Ziegler, Brass holder |- | 33 | Storage 4 #33 | <sup>90</sup>Sr | 54 | 2 010 | 1993 | 29 y | e<sup>-</sup> | DESY |- | 34 | Storage 4 #34 | <sup>55</sup>Fe | 1 000 | 37 000 | 2014 | 2.7 y | X-rays | UiB# 0218698 |- | 35 | Storage 4 #35a | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- | 36 | Storage 4 #35b | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- |} ===Storage 3=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 3 #1 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 2 | Storage 3 #2 | <sup>133</sup>Ba | 1 | 37 | 2013 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | |- | 3 | Storage 3 #3 | <sup>22</sup>Na | 1 | 37 | 2013 | 2.6 y | 511, 1 275 keV gamma | |- | 4 | Storage 3 #4 | <sup>57</sup>Co | 1 | 37 | 2013 | 272 d | 122 keV gamma | |- | 5 | Storage 3 #5a | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 6 | Storage 3 #5b | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 7 | Storage 3 #6 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 3 #7 | <sup>241</sup>Am | 1 | 37 | 1976 | 458 y | Alpha + 60 keV gamma | Glass tube set |- | 9 | Storage 3 #8 | <sup>90</sup>Sr | 1 | 37 | 1976 | 29 y | e<sup>-</sup> | Glass tube set |- | 10 | Storage 3 #9 | <sup>55</sup>Fe | 10 | 370 | 1976 | 30 y | 662 keV gamma | Glass tube set |- | 11 | Storage 3 #10 | <sup>106</sup>Ru | 2.7 | 100 | 2000 | 374 d | e<sup>-</sup> | |- | 12 | Storage 3 #11 | <sup>241</sup>Am | 10 | 370 | 1975 | 458 y | Alpha + 60 keV gamma | ORTEC AM-1U, S/N M-1343, act. 0.088 |- | 13 | Storage 3 #12 | <sup>90</sup>Sr | 2 000 | 74 000 | 2022 | 29 y | e<sup>-</sup> | VZ-3721-001 Capsule, Nominal, Φ 8mm x 5mm |- |} ===Storage 2=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 2 #1a | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 2 | Storage 2 #1b | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 3 | Storage 2 #1c | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 4 | Storage 2 #1d | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 5 | Storage 2 #1e | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 6 | Storage 2 #1f | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 7 | Storage 2 #2 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 2 #3a | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 9 | Storage 2 #3b | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 10 | Storage 2 #4a | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 11 | Storage 2 #4b | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 12 | Storage 2 #5a | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 13 | Storage 2 #5b | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 14 | Storage 2 #6 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 15 | Storage 2 #7 | <sup>152</sup>Eu | 0.04 | 1.5 | 2006 | 13.5 y | Many gamma lines | Sealed Liquid |- | 16 | Storage 2 #8a | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 17 | Storage 2 #8b | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 18 | Storage 2 #8c | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 19 | Storage 2 #9a | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 20 | Storage 2 #9b | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 21 | Storage 2 #9c | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 22 | Storage 2 #9d | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 23 | Storage 2 #10 | <sup>152</sup>Eu | 1 | 37 | 2005 | 13.5 y | Many gamma lines | |- | 24 | Storage 2 #11a | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 25 | Storage 2 #11b | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 26 | Storage 2 #11c | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 27 | Storage 2 #11d | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 28 | Storage 2 #12a | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 29 | Storage 2 #12b | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 30 | Storage 2 #12c | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 31 | Storage 2 #13 | <sup>241</sup>Am | 0.24 | 9 | N/A | 458 y | 60 keV gamma | GDM 625 |- | 32 | Storage 2 #14 | <sup>137</sup>Cs | 1.22 | 45 | N/A | 30 y | 662 keV gamma | GDM 134 |- | 33 | Storage 2 #15 | UO<sub>2</sub> | N/A | N/A | N/A | N/A | N/A | Nuclear fuel pellet (black cylinder in epoxy cube) |- |} ===Storage 1=== ====White==== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 1W #1 | <sup>241</sup>Am | 10 000 | 370 000 | | 458 y | X-rays | Variable X-ray source |- | 2 | Storage 1W #2 | <sup>241</sup>Am | 10 | 370 | 1993 | 458 y | 60 keV gamma | DA289 written on the source |- | 3 | Storage 1W #3 | <sup>60</sup>Co | 10 | 370 | 1970 | 10.5 y | 1 173, 1 333 keV gamma | A943F |- | 4 | Storage 1W #4 | <sup>147</sup>Pm | 10 000 | 370 000 | 1974 | 2.6 y | 76, 198 keV gamma | A1124/N11958 |- | 5 | Storage 1W #5 | <sup>137</sup>Cs | 10 | 370 | | 30 y | 662 keV gamma | S/N 15319; A919F |- | 6 | Storage 1W #6 | <sup>60</sup>Co | 1 | 37 | | 10.5 y | 1 173, 1 333 keV gamma | S/N 811-L-1 |- | 7 | Storage 1W #7 | <sup>241</sup>Am | 0.1 | 3.7 | 1966 | 458 y | 60 keV gamma | A922F; S/N M954 Ortec |- | 8 | Storage 1W #8 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 9 | Storage 1W #9 | <sup>137</sup>Cs | 100 | 3 700 | 1984 | 30 y | 662 keV gamma | |- | 10 | Storage 1W #10 | <sup>241</sup>Am | 14 000 | 518 000 | 1984 | 458 y | 60 keV gamma | M55005 |- | 11 | Storage 1W #11 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 12 | Storage 1W #12 | <sup>226</sup>Ra | 5-10 | 185-370 | 1970 | 1 600 y | 186 keV gamma | A859F; Leybold in a jar |- | 13 | Storage 1W #13 | <sup>137</sup>Cs | <10 | <370 | 2005 | 30 y | 662 keV gamma | Isotope generator |- | 14 | Storage 1W #14a | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 15 | Storage 1W #14b | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 16 | Storage 1W #14c | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 17 | Storage 1W #15 | <sup>90</sup>Sr | 2 000 | 74 000 | 1987 | 29 y | e<sup>-</sup> | Amersham (in a blue cylindrical collimator) |- | 18 | Storage 1W #16 | | | | 1945 | | | Hiroshima dust |- | 19 | | | 0 | 0 | 2005 | | | Eluting solution for Tilf #13 Isotope generator |- | 20 | Storage 4 #5 | <sup>226</sup>Ra | 2.7 | 100 | ~1970 | 1 600 y | 186 keV gamma | Previously store in Lab 420 |- |} ====Black==== {| class="wikitable" |- ! Item ! Source ID ! Activity, counts/s* ! Note |- | 1 | Storage 1B #1 | ~20 | Storage 1B R. 1 |- | 2 | Storage 1B #2 | ~120 | Storage 1B G. 1 |- | 3 | Storage 1B #3 | ~60 | Storage 1B G. 2 |- | 4 | Storage 1B #4 | ~100 | Storage 1B G. 3 |- | 5 | Storage 1B #5 | ~10 | Storage 1B G. 4 |- | 6 | Storage 1B #6 | ~10 | Storage 1B G. 5 |- | 7 | Storage 1B #7 | ~0 | Storage 1B G. 6 |- | 8 | Storage 1B #8 | ~220 | Storage 1B G. 7 |- | 9 | Storage 1B #9 | ~150 | Storage 1B G. 8 |- | 10 | Storage 1B #10 | ~10 | Storage 1B G. 9 |- | 11 | Storage 1B #11 | ~350 | Storage 1B G. 10 |- | 12 | Storage 1B #12 | ~500 | Storage 1B G. 11 |- | 13 | Storage 1B #13 | ~1 000 | Storage 1B G. 12 |- |} <nowiki>*</nowiki>Activity measured with an 1" NaI(Tl) crystal d9dd214792b39ad99f39d15baa89b5ed0ee03f24 2900 2899 2023-12-15T14:04:56Z Sya081 50 wikitext text/x-wiki ==Førstegangsbrukere / First-time users== ===Norsk=== Førstegangsbrukere skal: #Ta kontakt med strålevernkoordinator (STK) #Få de nødvendige instruksene fra STK om interne regler for bruk av strålekilder #Bli registrert for å få personlig dosimeter #Vente på dosimeteret (tar ca. 1-2 uker) #Begynne å bruke kilder etter de har fått sitt personlige dosimeter #Returnere dosimeteret sitt hvis det ikke trengs lenger (gravide brukere skal ikke jobbe med strålingskilder i løpet av svangerskapet) ===English=== First-time users shall: #Contact the Radiation protection responsible (RPR) #Receive the required instructions from the RPR on internal regulations for use of radioactive sources #Be registered for obtaining a personal dosimeter #Wait for the dosimeter (takes 1-2 weeks) #Begin working with sources after having received her/his personal dosimeter #Return her/his personal dosimeter if it is no longer needed (pregnant women shall not work with ionizing radiation during the pregnancy) ==Regler for bruk av strålekilder på IFT / Regulations for use of radioactive sources at the IFT== ===Norsk=== [[File:hierarket.jpg|thumb|alt=Hierarke / Hierarchy |Fig. 1 Hierarke / Hierarchy ]] [[File:TableHeader.jpg|thumb|alt=Logbokformat / Logbook format|Fig. 2 Logbokformat / Logbook format]] [[File:Slide2.JPG|thumb|alt=Logbokformat|Fig. 3 Skilt som brukes til svake kilder / Sign used for designating an area where weak sources are used]] [[File:Slide1.JPG|thumb|alt=Logbokformat|Fig. 4 Skilt som brukes til sterke kilder og kontaminerte områder hvor begrenset opphold er bare tillatt / Sign used for designating an area where strong sources are used, or for contaminated areas, where only a limited time presence is allowed]] #Strålevernkoordinatoren (STK) har oversikt over alle kildenes status. #Ansvarshierarkiet er som vist i Fig. 1. #Hver lab bør ha lab kildeansvarlig. I tilfelle det ikke er lab-kildeansvarlig deles kildene ut av STK. #Lab-kildeansvarlig velges av lab-brukerne, STK eller instituttleder. #Hver lab skal ha loggbok hvor bevegelsene til hver kilde som hører til denne laben skal registreres. Loggboken skal ha formatet som vist i Fig. 2: #Den første siden i loggboken skal ha navn og kontaktinfo til lab kildeansvarlig og navn og kontakt info til STK. #Loggboken skal være på labben til enhver tid, bundet med snor til kildeskapet. #Det er lab kildeansvarlig sitt ansvar å føre boken riktig. #STK skal kontrollere jobben til lab-kildeansvarlig ofte og uten varsel. #Det er 1 nøkkel til tilsvarende kildeskap hos lab-kildeansvarlig og 1 nøkkel hos STK. Leder for teknisk Avdeling (TA) og 1 ingeniør fra TA skal kunne få tilgang til STK sine nøkler i tilfelle STK ikke er tilstede. #Alle personer som har tilgang til nøkler til kildeskap får opplæring i dette regelverket og generell strålevern fra STK. #Ingen av ovennevnte får lov til å låne sin nøkkel til noen. STK kan delegere ansvaret for nøklene sine, men overføringen skal skje med overtagelsesprotokoll som er en del av loggboken. Lab-kildeansvarlig kan IKKE delegere sitt ansvar for nøkkelen. #En kildebruker skal først ta kontakt med sin lab-kildeansvarlig. Hvis han/hun ikke er tilstede kontaktes STK. Hvis han/hun ikke er til stedet kontaktes leder TA. Hvis han/hun ikke er til stedet kontaktes ingeniøren som er ansvarlig. Det er IKKE lov å hoppe over noen. #Hvis lab kildeansvarlig sier opp blir det varetelling med STK og instituttleder og signering av overtagelsesprotokoll. #Hvis STK sier opp blir det varetelling med UiB STK, instituttleder og den nye STK. Overtagelsesprotokoll signeres. #Arbeidsplass med åpen strålekilde skal merkeres med skilt (Fig. 3 eller Fig. 4) og eksponeringsvurdering skal utføres om nødvendig. #Det er ikke ønskelig å la kilder stå uovervåket. Hvis dette er nødvendig skal arbeidstedet markeres. #Det er ikke lov å jobbe med strålekilder uten dosimeter. STK og HMS-ansvarlig skal kontrollere labbene og brukerne uten varsel. #Hver bruker skal ha innføring i strålevern fra STK før de begynner å jobbe med kilder. Studenter som har bestått PHYS231 Strålingsfysikk får fritak. #Gravide brukere skal returnere sine dosimetere til HMS-ansvarlige i det øyeblikket de finner ut at de er gravide (se punkt 18). Dosimeteret blir returnert etter fødsel om det fremdeles er ønskelig. #Brukere som ikke har bruk for dosimeter lenger skal returnere dem til HMS ansvarlig. #Dosimetrene skal oppbevares på samme sted når de ikke er i bruk. Det stede skal bestemmes mellom bruker, STK og personen som er ansvarlig for den periodiske skift av TLD. #De personlige dosimetrene skal brukes bare på IFT og skal ikke taes fra huset. Dette inkluderer ansatte som jobber på eksterne fasiliteter som f.eks. CERN. Sånne ansatte får dosimetrer fra fasilitetene de besøker. ===English=== #The Radiation protection responsible (RPR) has all the information on the status of the radioactive sources at the IFT. #The hierarchy and the responsibilities are defined in Fig. 1. #Every lab should have a responsible for the radioactive sources. During the absence of the lab responsible it is the RPR who gives out sources. #The lab responsible is elected by the users in that lab, RPR or the Head of the department. #Every lab will have a logbook where the movement of all the sources belonging to this lab will be registered. The format of the logbook will be as shown in Fig. 2. #The first page in the logbook will contain the name and the contact info of the lab responsible and the name and the contact info of the RPR. #The logbook will be in the lab at all times, bound to the safe with the sources with the help of a thread. #It is the responsibility of the lab responsible to keep the book correctly. #RPR shall inspect the work of the lab responsible often and without warning. #There is one key per safe in the possession of the lab responsible and one key with the RPR. Head of Technical department and one engineer shall be able to access to the keys belonging to the RPR in case the RPR is absent. #All persons who have access to keys for the safes with radioactive sources shall be briefed on this framework of rules and on general radiation protection by the RPR. #Nobody from the aforementioned personnel is allowed to lend their keys to anyone. RPR can delegate the responsibility for a certain safe, but this will happen with a protocol. The protocol is a part of the logbook. The lab responsible is not allowed to delegate her/his responsibilities. #The users will first contact their lab responsible. If she/he are not present, the RPR is to be contacted. If she/he is not present the Head of the Technical department is to be contacted. If she/he is not present the authorized engineer is to be contacted. #When the lab responsible quits there will be an inspection of the inventory with the RPR and the Head of the Department, followed by signing a transfer protocol. #When the RPR quits there will be an inventory inspection together with the UiB RPR, the Head of the Department and the new RPR. This will result in signing a transfer protocol. #Workplace with an open radioactive source will be marked with a shield (Fig. 3 or Fig. 4) and there shall be a dose estimate if needed. #It is undesirable to leave sources unattended. If this is necessary, the work place shall be marked accordingly. #It is forbidden to work with radioactive sources without a dosimeter. The RPR and HSE responsible will the labs and the users without warning. #Every new user shall receive an introduction in radiation protection by the RPR before beginning to work with radioactive sources. Students who have successfully passed PHYS231 Strålingsfysikk or equivalent are exempt. #Pregnant users shall return their dosimeters to the HSE responsible in the moment they discover they are pregnant (see item 18). The dosimeters shall be returned after birth if they are still needed. #Users who no longer need their dosimeters shall return them to the HSE responsible. #The dosimeters shall be stored in the same place whenever they are no in use. That place is agreed upon between the user, the RPR and the person responsible for the periodic change of the TLD. #The personal dosimeter shall be used only when working at the IFT and shall be located at the IFT building at all times. This includes students and employees who work at external organizations like CERN. Such employees and students receive dosimeters at the institutions they visit. ==List of sealed sources at the IFT== ===Storage 4=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 4 #1 | <sup>241</sup>Am | 27 | 1 000 | 2006 | 458 y | 60 keV gamma | OI428/Code: AMRB 13788 |- | 2 | Storage 4 #2 | <sup>57</sup>Co | 100 | 3 700 | 2006 | 272 d | 122 keV gamma | Code: CTR 8252 |- | 3 | Storage 4 #3 | <sup>133</sup>Ba | 100 | 3 700 | 2006 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Code: BDR 8252 |- | 4 | Storage 4 #4 | <sup>155</sup>Eu | 100 | 3 700 | 1993 | 4.8 y | 105 keV gamma | |- | 5 | | | | | | | | |- | 6 | Storage 4 #6 | <sup>137</sup>Cs | 60 | 2 200 | 1986 | 30 y | 662 keV gamma | |- | 7 | Storage 4 #7 | <sup>241</sup>Am | 3 000 | 100 000 | 1977 | 458 y | 60 keV gamma | UB/FIB 539 |- | 8 | Storage 4 #8 | <sup>241</sup>Am | 10 000 | 370 000 | 1987 | 458 y | | Variable X-ray source |- | 9 | Storage 4 #9 | <sup>55</sup>Fe | 20 000 | 740 000 | N/A | 2.7 y | X-rays | Decayed |- | 10 | Storage 4 #10 | <sup>109</sup>Cd | 1 | 37 | 2011 | 427 d | 88 keV gamma | Calibr. Set Spectrum Techniques |- | 11 | Storage 4 #11 | <sup>57</sup>Co | 1 | 37 | 2011 | 272 d | 122 keV gamma | Calibr. Set Spectrum Techniques |- | 12 | Storage 4 #12 | <sup>133</sup>Ba | 1 | 37 | 2011 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. Set Spectrum Techniques |- | 13 | Storage 4 #13 | <sup>60</sup>Co | 1 | 37 | 2011 | 5.3 y | 1 173, 1 333 keV gamma | Calibr. Set Spectrum Techniques |- | 14 | Storage 4 #14 | <sup>137</sup>Cs | 1 | 37 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 15 | Storage 4 #15 | <sup>22</sup>Na | 1 | 37 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 16 | Storage 4 #16 | <sup>137</sup>Cs<sup>65</sup>Zn | 1 | 37 | 2011 | 30 y + 244 d | 662 + 1 116 keV gamma | Calibr. Set Spectrum Techniques |- | 17 | Storage 4 #17 | <sup>54</sup>Mn | 1 | 37 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 18 | Storage 4 #18 | <sup>137</sup>Cs | 10 | 370 | 2011 | 30 y | 662 keV gamma | Calibr. Set Spectrum Techniques |- | 19 | Storage 4 #19 | <sup>22</sup>Na | 10 | 370 | 2011 | 2.6 y | 511, 1 275 keV gamma | Calibr. Set Spectrum Techniques |- | 20 | Storage 4 #20 | <sup>54</sup>Mn | 10 | 370 | 2011 | 312 d | 835 keV gamma | Calibr. Set Spectrum Techniques |- | 21 | Storage 4 #21 | <sup>133</sup>Ba | 10 | 370 | 2012 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Calibr. source Eckert & Ziegler |- | 22 | Storage 4 #22 | <sup>241</sup>Am | 1 | 37 | 1990 | 458 y | 60 keV gamma | Laborel box (ruined and sagregated for disposal) |- | 23 | Storage 4 #23 | <sup>109</sup>Cd | 1 | 37 | 1990 | 427 d | 88 keV gamma | Laborel box |- | 24 | Storage 4 #24 | <sup>139</sup>Ce | 1 | 37 | 1990 | 138 d | 166 keV gamma | Laborel box |- | 25 | Storage 4 #25 | <sup>57</sup>Co | 1 | 37 | 1990 | 272 d | 122 keV gamma | Laborel box |- | 26 | Storage 4 #26 | <sup>137</sup>Cs | 1 | 37 | 1990 | 30 y | 662 keV gamma | Laborel box |- | 27 | Storage 4 #27 | <sup>51</sup>Cr | 1 | 37 | 1990 | 27 d | 320 keV gamma | Laborel box |- | 28 | Storage 4 #28 | <sup>54</sup>Mn | 1 | 37 | 1990 | 312 d | 835 keV gamma | Laborel box |- | 29 | Storage 4 #29 | <sup>113</sup>Sn | 1 | 37 | 1990 | 115 d | 255 keV gamma | Laborel box |- | 30 | Storage 4 #30 | <sup>85</sup>Sr | 1 | 37 | 1990 | 65 d | 355 keV gamma | Laborel box |- | 31 | Storage 4 #31 | <sup>65</sup>Zn | 1 | 37 | 1990 | 244 d | 1 116 keV gamma | Laborel box |- | 32 | Storage 4 #32 | <sup>133</sup>Ba | 4 000 | 148 000 | 2014 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | Eckert & Ziegler, Brass holder |- | 33 | Storage 4 #33 | <sup>90</sup>Sr | 54 | 2 010 | 1993 | 29 y | e<sup>-</sup> | DESY |- | 34 | Storage 4 #34 | <sup>55</sup>Fe | 1 000 | 37 000 | 2014 | 2.7 y | X-rays | UiB# 0218698 |- | 35 | Storage 4 #35a | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- | 36 | Storage 4 #35b | <sup>14</sup>C | 10 | 370 | 2018 | 5730 y | e<sup>-</sup> | Thin plate; Spec. Tech. Mod# C14LMW10 |- |} ===Storage 3=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 3 #1 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 2 | Storage 3 #2 | <sup>133</sup>Ba | 1 | 37 | 2013 | 10.5 y | 80, 276, 303, 356, 384 keV gamma | |- | 3 | Storage 3 #3 | <sup>22</sup>Na | 1 | 37 | 2013 | 2.6 y | 511, 1 275 keV gamma | |- | 4 | Storage 3 #4 | <sup>57</sup>Co | 1 | 37 | 2013 | 272 d | 122 keV gamma | |- | 5 | Storage 3 #5a | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 6 | Storage 3 #5b | <sup>60</sup>Co | 1 | 37 | 2005 | 5.3 y | 1 173, 1 333 keV gamma | |- | 7 | Storage 3 #6 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 3 #7 | <sup>241</sup>Am | 1 | 37 | 1976 | 458 y | Alpha + 60 keV gamma | Glass tube set |- | 9 | Storage 3 #8 | <sup>90</sup>Sr | 1 | 37 | 1976 | 29 y | e<sup>-</sup> | Glass tube set |- | 10 | Storage 3 #9 | <sup>55</sup>Fe | 10 | 370 | 1976 | 30 y | 662 keV gamma | Glass tube set |- | 11 | Storage 3 #10 | <sup>106</sup>Ru | 2.7 | 100 | 2000 | 374 d | e<sup>-</sup> | |- | 12 | Storage 3 #11 | <sup>241</sup>Am | 10 | 370 | 1975 | 458 y | Alpha + 60 keV gamma | ORTEC AM-1U, S/N M-1343, act. 0.088 |- | 13 | Storage 3 #12 | <sup>90</sup>Sr | 2 000 | 74 000 | 2022 | 29 y | e<sup>-</sup> | VZ-3721-001 Capsule, Nominal, Φ 8mm x 5mm |- |} ===Storage 2=== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 2 #1a | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 2 | Storage 2 #1b | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 3 | Storage 2 #1c | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 4 | Storage 2 #1d | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 5 | Storage 2 #1e | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 6 | Storage 2 #1f | <sup>137</sup>Cs | 5 | 185 | 2003 | 30 y | 662 keV gamma | |- | 7 | Storage 2 #2 | <sup>137</sup>Cs | 5 | 185 | 1999 | 30 y | 662 keV gamma | |- | 8 | Storage 2 #3a | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 9 | Storage 2 #3b | <sup>90</sup>Sr | 0.1 | 3.7 | 2005 | 29 y | e<sup>-</sup> | |- | 10 | Storage 2 #4a | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 11 | Storage 2 #4b | <sup>210</sup>Po | 0.1 | 3.7 | 2005 | 138 d | 803 keV gamma | |- | 12 | Storage 2 #5a | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 13 | Storage 2 #5b | <sup>137</sup>Cs | 5 | 185 | 1972 | 30 y | 662 keV gamma | |- | 14 | Storage 2 #6 | <sup>60</sup>Co | 5 | 185 | 1972 | 5.3 y | 1 173, 1 333 keV gamma | |- | 15 | Storage 2 #7 | <sup>152</sup>Eu | 0.04 | 1.5 | 2006 | 13.5 y | Many gamma lines | Sealed Liquid |- | 16 | Storage 2 #8a | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 17 | Storage 2 #8b | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 18 | Storage 2 #8c | <sup>22</sup>Na | 1 | 37 | 2005 | 2.6 y | 511, 1 275 keV gamma | |- | 19 | Storage 2 #9a | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 20 | Storage 2 #9b | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 21 | Storage 2 #9c | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 22 | Storage 2 #9d | <sup>137</sup>Cs | 0.5 | 18.5 | 2005 | 30 y | 662 keV gamma | |- | 23 | Storage 2 #10 | <sup>152</sup>Eu | 1 | 37 | 2005 | 13.5 y | Many gamma lines | |- | 24 | Storage 2 #11a | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 25 | Storage 2 #11b | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 26 | Storage 2 #11c | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 27 | Storage 2 #11d | <sup>204</sup>Tl | 10 | 370 | 1993 | 3.78 y | 511 keV gamma | Al housing |- | 28 | Storage 2 #12a | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 29 | Storage 2 #12b | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 30 | Storage 2 #12c | <sup>226</sup>Ra | 0.09 | 3.3 | 2005 | 1 600 y | 186 keV gamma | Glass jar |- | 31 | Storage 2 #13 | <sup>241</sup>Am | 0.24 | 9 | N/A | 458 y | 60 keV gamma | GDM 625 |- | 32 | Storage 2 #14 | <sup>137</sup>Cs | 1.22 | 45 | N/A | 30 y | 662 keV gamma | GDM 134 |- | 33 | Storage 2 #15 | UO<sub>2</sub> | N/A | N/A | N/A | N/A | N/A | Nuclear fuel pellet (black cylinder in epoxy cube) |- |} ===Storage 1=== ====White==== {| class="wikitable" |- ! Item ! Source ID ! Isotope ! Activity, µCi ! Aktivity, kBq ! Year ! Half-life ! Radiation type ! Note |- | 1 | Storage 1W #1 | <sup>241</sup>Am | 10 000 | 370 000 | | 458 y | X-rays | Variable X-ray source |- | 2 | Storage 1W #2 | <sup>241</sup>Am | 10 | 370 | 1993 | 458 y | 60 keV gamma | DA289 written on the source |- | 3 | Storage 1W #3 | <sup>60</sup>Co | 10 | 370 | 1970 | 10.5 y | 1 173, 1 333 keV gamma | A943F |- | 4 | Storage 1W #4 | <sup>147</sup>Pm | 10 000 | 370 000 | 1974 | 2.6 y | 76, 198 keV gamma | A1124/N11958 |- | 5 | Storage 1W #5 | <sup>137</sup>Cs | 10 | 370 | | 30 y | 662 keV gamma | S/N 15319; A919F |- | 6 | Storage 1W #6 | <sup>60</sup>Co | 1 | 37 | | 10.5 y | 1 173, 1 333 keV gamma | S/N 811-L-1 |- | 7 | Storage 1W #7 | <sup>241</sup>Am | 0.1 | 3.7 | 1966 | 458 y | 60 keV gamma | A922F; S/N M954 Ortec |- | 8 | Storage 1W #8 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 9 | Storage 1W #9 | <sup>137</sup>Cs | 100 | 3 700 | 1984 | 30 y | 662 keV gamma | |- | 10 | Storage 1W #10 | <sup>241</sup>Am | 14 000 | 518 000 | 1984 | 458 y | 60 keV gamma | M55005 |- | 11 | Storage 1W #11 | <sup>241</sup>Am | 10 000 | 370 000 | 2010 | 458 y | 60 keV gamma | |- | 12 | Storage 1W #12 | <sup>226</sup>Ra | 5-10 | 185-370 | 1970 | 1 600 y | 186 keV gamma | A859F; Leybold in a jar |- | 13 | Storage 1W #13 | <sup>137</sup>Cs | <10 | <370 | 2005 | 30 y | 662 keV gamma | Isotope generator |- | 14 | Storage 1W #14a | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 15 | Storage 1W #14b | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 16 | Storage 1W #14c | <sup>238</sup>U | 1 | 37 | 2006 | 4.5e9 y | 50, 114 keV gamma + alpha | Liquid in plastic bottles (B. Stugu’s) |- | 17 | Storage 1W #15 | <sup>90</sup>Sr | 2 000 | 74 000 | 1987 | 29 y | e<sup>-</sup> | Amersham (in a blue cylindrical collimator) |- | 18 | Storage 1W #16 | | | | 1945 | | | Hiroshima dust |- | 19 | | | 0 | 0 | 2005 | | | Eluting solution for Tilf #13 Isotope generator |- | 20 | Storage 4 #5 | <sup>226</sup>Ra | 2.7 | 100 | ~1970 | 1 600 y | 186 keV gamma | Previously stored in Lab 420 |- |} ====Black==== {| class="wikitable" |- ! Item ! Source ID ! Activity, counts/s* ! Note |- | 1 | Storage 1B #1 | ~20 | Storage 1B R. 1 |- | 2 | Storage 1B #2 | ~120 | Storage 1B G. 1 |- | 3 | Storage 1B #3 | ~60 | Storage 1B G. 2 |- | 4 | Storage 1B #4 | ~100 | Storage 1B G. 3 |- | 5 | Storage 1B #5 | ~10 | Storage 1B G. 4 |- | 6 | Storage 1B #6 | ~10 | Storage 1B G. 5 |- | 7 | Storage 1B #7 | ~0 | Storage 1B G. 6 |- | 8 | Storage 1B #8 | ~220 | Storage 1B G. 7 |- | 9 | Storage 1B #9 | ~150 | Storage 1B G. 8 |- | 10 | Storage 1B #10 | ~10 | Storage 1B G. 9 |- | 11 | Storage 1B #11 | ~350 | Storage 1B G. 10 |- | 12 | Storage 1B #12 | ~500 | Storage 1B G. 11 |- | 13 | Storage 1B #13 | ~1 000 | Storage 1B G. 12 |- |} <nowiki>*</nowiki>Activity measured with an 1" NaI(Tl) crystal 48153f8eb9fd3d8839296c2cdd3839e5b6c89967 ift:Administrators 4 684 2888 2798 2022-11-24T16:18:20Z Nfo058 90 wikitext text/x-wiki User:Nfyal User:Nfyst User:Nfo058 User:bla008 f967481443906fa6cd075e600dc5144d67e8f518 2889 2888 2022-11-24T16:25:20Z Nfo058 90 wikitext text/x-wiki User:Nfyal User:Nfyst User:Nfo058 User:Bla008 df30e86b6d4758c6ec6a4cea10b6389f698451ed 2891 2889 2022-11-24T16:48:32Z Nfo058 90 wikitext text/x-wiki User:Nfyal User:Nfyst User:Nfo058 61bafb8cd3ee45734438153f17d0f8e9460b3b5f User:Bla008 2 703 2890 2022-11-24T16:42:29Z Nfo058 90 Created page with "Test." wikitext text/x-wiki Test. 748d77dbb8bdb0dd330c099e7fde82da053fb1ff Particle Physics group 0 137 2894 2858 2022-11-29T09:18:09Z Bla008 79 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas2.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics was funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway until 2020. Now we are a part of Center for CERN Related Research. HistorY: The last HEPP funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). We are also involved in the [http://www.cta-observatory.org/ Cherenkov Telescope Array]. [[Cherenkov_Telescope_Array_-_Norway|Click here for more info]]. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * [[The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page] ]] * [[Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page]]] * [[From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page]]] === Job openings in our group=== all our jobs are listed in [https://www.jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] f0b9065296611b0279621e722eb9af9187dec40e 2895 2894 2022-11-29T09:22:08Z Bla008 79 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. (We also have our internal Wiki, at A0 , UiB Wiki [http://atlas2.ift.uib.no/wiki/index.php/Main/HomePage here] with information which is not public outside ATLAS-Bergen. ) Particle Physics was funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway until 2020. Now we are a part of Center for CERN Related Research. HistorY: The last HEPP funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). We are also involved in the [http://www.cta-observatory.org/ Cherenkov Telescope Array]. [[Cherenkov_Telescope_Array_-_Norway|Click here for more info]]. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page] * Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page] * From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page] === Job openings in our group=== all our jobs are listed in [https://www.jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 7748f401d9670b8ef5163678000c7d269445ce69 2896 2895 2023-08-17T11:26:26Z Bla008 79 wikitext text/x-wiki == Particle Physics == [[Image:atlas_banner.jpg]] Wiki page for Bergen University Particle Physics Group. (We also have our internal ATLAS UiB twiki [https://twiki.cern.ch/twiki/bin/view/AtlasProtected/AtlasBergen here] with information which is not public outside ATLAS-Bergen. ) Particle Physics was funded by the HEPP (High Energy Particle Physics) programme of the Research Council of Norway until 2020. Now we are a part of Center for CERN Related Research. HistorY: The last HEPP funding application description (mostly funded) for the period 2016-2019 can be read here [[File:ProjectDescription2015.pdf]]. The report from the September 2016- September 2017 activity can be found here [[File:HEPP-2017-report-not-final.pdf]]. You can also read up on responsibilities of your local ATLAS group team leader as seen from CERN point of view here [[File:CERN_Team_Leader_Responsibilities.pdf]] In years 2020-2024 we are a part of the Grieg project, "Early Universe", see twiki here: [https://wiki.uib.no/ift/index.php/GRIEG_project_%22EarlyUniverse%22 Grieg "EarlyUniverse"] To get write access to these pages below you must have a UiB account, then you have to login using the login in link in the upper right corner of the wiki page, once you've done this send an e-mail and Anna Lipniacka (temporary info) and she will figure out who can activate your account (probably Kjetil). We are also involved in the [http://www.cta-observatory.org/ Cherenkov Telescope Array]. [[Cherenkov_Telescope_Array_-_Norway|Click here for more info]]. === [[ParticlePhysicsGroupMeetings|Meetings, Seminars & Tutorials]] === === [[ATLASThesesNotes|Theses, Notes, Publications, Public Software]] === === [[ATLASTutorials|ATLAS Tutorials]] === === [[HEPOutreach|HEP Outreach]] === === [http://atlassec.web.cern.ch/atlassec/Registration.htm ATLAS newcomers] === === Local Conferences === * The Dark Side of the Universe, DSU2016 25-29 July 2016 [https://indico.cern.ch/event/459881/ agenda page] * Nordic b-annual particle physics meeting [http://www.hip.fi/spatind2016 agenda page] * From Higgs to Dark Matter 2014, , [http://indico.cern.ch/e/geilo-2014 indico page] === Job openings in our group=== all our jobs are listed in [https://www.jobbnorge.no jobbnorge.no] * [[ ]] ===Misc and AoB=== * Talks by group members part 1, some of them not public [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22orjan%20dale%22%20OR%20%22lipniacka%22%20OR%20%22latour%22%20OR%20%22sjursen%22%20OR%20%22liebig%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * Talks by group members, some of them visible only to ATLAS, part 2 [https://search.cern.ch/Pages/IndicoFrame.aspx?isFrame=1&k=author%3A%22fomin%22%20OR%20%22maeland%22%20OR%20%22zalieckas%22%20OR%20%22zongchang%20yang%22%20OR%20%22stugu%22%20OR%20%22hellesund%22%20OR%20%22eigen%22&isDlg=1&httpsActivation=1&autologin=1&v1=%2Dwrite&r=format%3D%22ARMBSW5kaWNvIENvbnRyaWJ1dGlvbgZmb3JtYXQBAl4iAiIk%22 here] * News from Sierra Nevada on extreme lightning: [http://yubanet.com/scitech/two-new-lightning-extremes-announced/ here] * Links to ift-posten from 2016 [http://org.uib.no/ift-posten/IFT-posten2016/ here] and 2017 [http://org.uib.no/ift-posten/IFT-posten2017/ here] * CERN summer student program [https://home.cern/students-educators/summer-student-programme about and how to apply] * Isaac Newton a hermit and a tyrant, BBC documentary [https://www.academicvideostore.com/video/isaac-newton-last-magician here] Last changes: [AL] 16:30, 24 september 2016 (CET) [[Category:Particle Physics]] 913a7718722d6524c2f2c945333d3a95dd4bd0d4 Cherenkov Telescope Array - Norway 0 693 2897 2865 2023-08-29T08:03:43Z Jdj005 113 /* Information for beginners */ wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. = Information for beginners = Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Introductory talk about DM searches at CTA: https://www.youtube.com/watch?v=g2tyOIsy1kQ * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Introduction to Gammapy 1.0 by Axel (Scipy 2023): https://youtu.be/NOX-jVj4IPA?si=YCUpFMTNkXFs0akm and slides: https://doi.org/10.25080/gerudo-f2bc6f59-0282023): * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 * Equatorial coordinate system explained: https://www.youtube.com/watch?v=WvXTUcYVXzI * Rather lengthy and detailed introduction to the field: https://arxiv.org/abs/2111.01198 == Registering new arrivals == The group leader has to add the name to this list: https://portal.cta-observatory.org/Bodies/ProjectOffice/Lists/People/Grouped.aspx and then an email has to be sent to Tiziana to ask for an account for the CTA web services. 2c06ab19e1b2a386dfccd94097e4c0201e1a0080 2898 2897 2023-08-29T08:04:14Z Jdj005 113 wikitext text/x-wiki Several Norwegian institutes are involved in the [https://www.cta-observatory.org/ Cherenkov Telescope Array] (CTA) - a next level observatory for gamma ray astronomy. We have [https://indico.cern.ch/category/10575/ regular meetings] and currently focus on Dark Matter searches with CTA. Here, we collect some information for collaboration. = Information for beginners = Below are some links to introduce you to what we are doing. * CTA obseratory website: https://www.cta-observatory.org/ * The software we use: https://docs.gammapy.org/0.18.2/index.html * Suggested reading: Chapter 4 of the paper "Science with CTA" (nice introduction, then it gets more specific) https://arxiv.org/abs/1709.07997 * Short video about how CTA works: https://www.youtube.com/watch?v=5gRHFQP_SjU * Scientific talk about the CTA observatory (status and perspective): https://www.youtube.com/watch?v=1yXTQbF9hsg&feature=youtu.be&ab_channel=UlissesBarresdeAlmeida * Introductory talk about DM searches at CTA: https://www.youtube.com/watch?v=g2tyOIsy1kQ * Talk about Searching for DM with CTA (at least the intro is nice then it gets rather specific in the end): https://www.youtube.com/watch?v=idixr03VTDs&feature=youtu.be&ab_channel=CsabaBalazs * Introduction to Gammapy 1.0 by Axel (Scipy 2023): https://youtu.be/NOX-jVj4IPA?si=YCUpFMTNkXFs0akm and slides: https://doi.org/10.25080/gerudo-f2bc6f59-0282023 * Talk on gamma-ray, CTA and gammapy: https://www.youtube.com/watch?v=kL8TWYcF0h8&ab_channel=LabExUnivEarthS * More detailed talk on gammapy by Axel (this can be used for getting started with gammapy. The jupyter notebooks that he discusses can be downloaded here: https://github.com/escape2020/school2021/tree/main/gammapy first he uses the gammapy-overview.ipynb and then gammapy-cta-gc.ipynb): https://www.youtube.com/watch?v=gsAI0TDV5B0&ab_channel=ESCAPE_EU * If you want a deeper understanding of the underlying python packages, here you can find talks on astropy, scipy, matplotlib, and numpy: https://www.youtube.com/channel/UC05braEQdP2rCSUamHm9I_Q/videos with the corresponding notebooks here: https://github.com/escape2020/school2021 * Equatorial coordinate system explained: https://www.youtube.com/watch?v=WvXTUcYVXzI * Rather lengthy and detailed introduction to the field: https://arxiv.org/abs/2111.01198 == Registering new arrivals == The group leader has to add the name to this list: https://portal.cta-observatory.org/Bodies/ProjectOffice/Lists/People/Grouped.aspx and then an email has to be sent to Tiziana to ask for an account for the CTA web services. a0d99c7e654679d6f4a0d0951dd42f3848fd9561 Simulering av VHDL 0 34 2901 2813 2024-01-24T07:54:24Z Nfyku 4 /* Starte Questa Sim */ wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. Generelt ligger programvaren i /eda/Siemens, og versjonene ligger i mapper sortert på årstall. ssh -X mikroserver4 export LM_LICENSE_FILE=1717@lisensserver source /eda/Siemens/2023-24/scripts/QUESTA-CORE-PRIME_2023.4_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden under. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Simulere med optimaliseringsopsjon "-voptargs=+acc" for å kunne se variablene i wave-vinduet: vsim -voptargs=+acc sign_var Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. Hva er forskjellen som funksjon av tid/delta-tid? <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (clk : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference p_test: process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process p_test; end architecture difference; </pre> 6a0ca52d039d48076a2daa6333a72a8d07656e10 2904 2901 2024-05-30T11:39:53Z Nfyku 4 wikitext text/x-wiki ===Konstruksjon og simulering av VHDL-kode med Modelsim/Questa=== ==Innledning== Hensikten med denne oppgaven er å få et lite innblikk i bruk av høynivåspråk for simulering og uttesting av kretsløsninger. I denne oppgaven skal vi bruker VHDL (Very high speed integrated circuit Hardware Description Language), som er spesielt utviklet for elektronikk. VHDL er definert slik at det passer i en mengde sammenhenger, og er det vil derfor være uoverkommelig å gå inn på detaljer i denne oppgaven. Vi skal ta for oss noen eksempler: * Eksempel 1: Signalflyt i en SR-lås * Eksempel 2: Signaler og variable Et VHDL program består i hovedsak av ENTITY, som definerer tilkobling mellom programmet og omverden, og ARCHITECTURE, som definerer programmets funksjon. Den komplette VHDL-koden for eksempel 1 vist nederst på denne siden.Mentor Graphics har utviklet programvare (Modelsim//Questa) som gjør det mulig å beskrivem, simulere og feilsøke VHDL-kode. Fremgangsmåten for skriving, kompilering og simulering av VHDL-kode finner du under. ==Starte Questa Sim== Når man skal arbeide med Questa Sim fra Mentor Graphics skriv følgende kommando i et terminalvindu. Generelt ligger programvaren i /eda/Siemens, og versjonene ligger i mapper sortert på årstall. ssh -X mikroserver4 export LM_LICENSE_FILE="Sett inn rett lisensserver og port her" source /eda/Siemens/2023-24/scripts/QUESTA-CORE-PRIME_2023.4_RHELx86.sh vsim ==Lage et nytt prosjekt== I den følgende teksten er det vist hvordan man kan utføre kompilering, etc. på kommandolinjen. Dette kan enten gjøres i fra X terminalvinduet, eller fra kommandolinjen i Questa. Hvis man velger å bruke Questa-miljøet er de fleste prosedyrer/kommandoer tilgjengelige under menyen. Start et nytt prosjekt med <pre> File > New > Project </pre> [[Image:questa_new_project.png]] Velg et fornuftig navn og katalog. Man kan gjerne ha flere uavhengige vhdl-filer i et prosjekt. Det er en fordel å ha en hovedkatalog til vhdl prosjektene og en underkatalog for prosjektet fex /home/bruker/vhdl_prosjekt/sr_latch ==Skriving av VHDL kode== En ny VHDL kode (et design beskrevet med VHDL kode) påbegynnes med å starte emacs i terminal vinduet eller ved å bruke den innebygde teksteditoren i Questa ved å velge Create New File. Det fine med emacs er at man kan velge VHDL-modus. Dette gjøres med å skrive ''M-x vhdl-mode'' (M står for ''Meta'' og er vanligvis definert som esc-knappen). I emacs har en menyer med alle valg oppe langs kanten som i andre teksteditorer, men programmet skiller seg litt ut med kommandolinjen nederst i vinduet. Når en f. eks. skal lagre filen en har skrevet blir denne kommandolinjen aktiv og en skriver inn sti og filnavn der. Når man lagrer er ikke navnet på kodefilen viktig, men det er fornuftig å kalle den det samme som ENTITY-delen, med ''.vhdl'' som "etternavn" (f. eks. sr_latch.vhdl). ==Kompilering av VHDL kode== Koden kompileres med <pre> vcom sr_latch.vhdl </pre> Hvis det er feil i koden vil det komme en melding i kommando vinduet. Dobbeltklikker du på feilen vil du få opp en liste over kompileringsprosessen og alle feilene. Dobbeltklikker du så på linjen som angir en feil så vises den respektive linjen i editoren. Merk at navnet til det kompilerte designet blir skrevet med små bokstaver, selv om du har brukt store bokstaver i ENTITY- eller ARCHITECTURE-navnet. Det kompilerte designet blir liggende i work-katalogen. ==Simulering og debugging i Questa== Når koden kompilerer feilfritt kan den simuleres i Questa. Dette startes med: <pre> vsim </pre> Nå dukker det opp en rute der du skal velge hva som skal simuleres, utvid work og velg vhdl filen. Eventuellt kan du skrive vsim work.sr_latch i kommandovinduet Questa bruker et standard X-basert vindusoppsett, og er derfor noen forskjellig fra de andre Mentor-programmene. Når du starter simulatoren åpnes det et vindu som vist i figur 1. Begynn med å åpne diverse vinduer: * View > Wave * View > Objects * View > Locals Man kan også gi kommandoer i Questa-vinduet. F.eks. <pre> Wave * </pre> Dra de signalene du vil se på i wave vinduet fra object vinduet. Signalverdier settes med kommandoen 'force' eller med <pre> Force > Force (i "Signals" vinduet) </pre> Dersom et av signalene skal være klokkesignal, kan dette gjøres enkelt med <pre> Force > Clock (i "Signals" vinduet) </pre> ==Eksempler== ===Signalflyt i en SR-lås=== Simuler SR-låsen. Begynn med å påtrykke stimuli til alle signaler ved tid 0 (t0). Bruk STEP-knappen for å simulere på delta-tid-nivå. (Om en holder musepekeren over knappene i Questa, kommer det en forklarende tekst opp.) Når verdiene er stabile kjører du i f.eks. 100 ns før du endrer stimuli (skriv ''run 100'' i et av vinduene). Tilsvarende kan du endre stimuli ved å skrive f.eks. ''force S 0'' i hoved-vinduet. Legg merke til den røde pilen som peker på den linjen som blir utført. Hvis du vil begynne på ny kan du velge <pre> File > Restart -f </pre> <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY SR_latch IS PORT ( S,R : IN std_logic ; Q,QB : INOUT std_logic ); END SR_latch; ------------------------------------------------------------------------------- ARCHITECTURE behave OF SR_latch IS BEGIN -- behave Q <= S nand QB; QB <= R nand Q; END behave; </pre> ===Signaler og variable=== Simuler VHDL-koden under. Bruk Step eller Step Over for å følge prosedyrens utvikling linje for linje. Simulere med optimaliseringsopsjon "-voptargs=+acc" for å kunne se variablene i wave-vinduet: vsim -voptargs=+acc sign_var Bruk View > Objects for å kikke på signalene og View > Local for å se innholdet i variablene. Forklar endringene i signaler og variable. Hva er forskjellen som funksjon av tid/delta-tid? <pre> LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY sign_var IS PORT (clk : IN std_logic); END sign_var; ------------------------------------------------------------------------------- ARCHITECTURE difference OF sign_var IS signal SA: bit := '0'; signal SB: bit := '1'; begin -- difference p_test: process variable A: bit := '0'; variable B: bit := '1'; begin wait until rising_edge(clk); A := B; B := A; SA <= SB after 5 ns; SB <= SA after 5 ns; end process p_test; end architecture difference; </pre> 8ecec7e3830f4949613236bcdabc681363978348 Synthese av VHDL 0 36 2902 2819 2024-01-24T07:58:50Z Nfyku 4 /* Precision */ wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=1717@lisensserver:2100@lisensserver source /eda/Siemens/2023-24/scripts/PRECISION_2023.2_RHELx86.sh precision Erstatt lisensserver med rett navn på lisensserver.Nye versjoner av programvaren ligger i /eda/Siemens sortert på årstall. Velg deretter New Project, og deretter Add input file (i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic (syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila (add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps -sdfnoerror -sdfmax /alu_synth=/home/kaf003/VHDL_Prosjekter/PHYS321/vivado_impl_1/add_sub_alu_synth.sdf work.alu_tb Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Questasim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den syntesiserte komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda (sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk : std_logic; signal reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end architecture struct; </pre> [[Category:Mikroelektronikk]] 02708baa3b81903c37c3568ef4ae4746b18d96f3 2905 2902 2024-05-30T11:43:00Z Nfyku 4 wikitext text/x-wiki ===Syntetiseringen av VHDL kode=== Grunnen til at vi skal syntetisere koden, er at vi må lage beskrivelse av koden tilpassa ein krets. Vi vil no prøve å synthesisere vhdl kode. Og etterpå vil vi lage ein testbenk der vi samanliknar utsignala frå den syntetiserte og den opprinnelige koden. Vi bruker ein alu som eksempel. ==Precision== Precision bruker Vivado til å syntetisere vhdl-koden. For å starte synteseprogrammet: export LM_LICENSE_FILE=27001@lisensserver1:29000@lisensserver2 source /eda/Siemens/2023-24/scripts/PRECISION_2023.2_RHELx86.sh precision Erstatt lisensserver med rett navn på lisensserver (se "Micro-how-to" i mikroelektronikk-teamet).Nye versjoner av programvaren ligger i /eda/Siemens sortert på årstall. Velg deretter New Project, og deretter Add input file (i dette tilfelle add_sub_alu.vhd). Så går vi inn på Setup design, velger ein kretsprodusent, den ønska kretsen og designfrekvens, for eksempel Zynq med frekvens 200MHz. For å få ut en vhdl fil av den syntetiserte koden må en gå på Tools->Options->Output og hak av for VHDL og trykk ok. Pass på at Precision finner Vivado, settes i menyen: Tools > Options > Place and Route Settings deretter Vivado > Integrated Place and Route > path to Xilinx Vivado installation tree settes til /eda/xilinx/Vivado/2020.2 Trykk så compile, og synthesize. No kan vi sjå på den generte kretsen i RTL Schematic og Technology Schematic (syntese med den valgte kretsen) under Schematics på venstre side. ==Questasim== Start opp Questasim, lag nytt prosjekt og legg til vhdl fila (add_sub_alu.vhdl). Så legg vi til fila som Precision generte i prosjektdir til 'precision/prosjektnavn_temp_1/prosjektnavn.vhd' (i vårt tilfelle 'alu/add_sub_alu_temp_1/add_sub_alu.vhd'). Vi trenger simuleringsbibliotek for den valgte kretsfamilien for å kunne simulere etter "Place and Route". Disse bibliotekene kan genereres fra Vivado med menyen Tools > Compile Simulation Libraries men, vi har kompilert disse unisim-bibliotekene til mappen /eda/xilinx/lib. Du kan "mappe" disse slik: vmap unisim /eda/xilinx/lib/unisim Deretter legger vi til ei ny vhdl fil der vi skal lage testbenken vår. Vi legger til ein komponent av den opprinnelige og den synthesiserte vhdl koden. Vi koblar alle inngangane til samme signal på testbenken, og gir ut 2 forskjellige utsignal for å samanlikne ved hjelp av assert(sjå fila alu_tb.vhdl). På grunn av at utsignala av dei to komponentane ikkje skifta heilt synkront, testa vi berre kvart nanosekund ved å putta assert inn i ein process med wait for 1ns: test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; Når vi har laga testbenken, kompilerer vi filene (husk å kompilere i rett rekkefølge med compileorder->autogenerate første gong). Siden precision generer samme navn på entityen og architecturen på den syntetiserte filen som i den orginale så vil ikke simulatoren kjøre de samtidig. Dette endres ved å endre entity fra add_sub_alu til add_sub_alu_synth og skifte navnet på architecture fra algoritm til structure øverst og nederst i den syntetiserte filen. ==Simulering med timing== Eksempel på start av simulering med timing: vsim -t ps -sdfnoerror -sdfmax /alu_synth=/home/kaf003/VHDL_Prosjekter/PHYS321/vivado_impl_1/add_sub_alu_synth.sdf work.alu_tb Vi kan sjå at i dei første 50 nanosekunda er utsignala ulike. Dette er fordi før første klokkeflanke er verdiane udefinert i den opprinnelige komponenten, medan den synthesisere ikkje kan ha udefinerte verdiar. I Questasim vil vi derfor få ein del feilmeldingar dei første 50 nanosekunda. ==Konklusjon== Vi kan teste om den syntesiserte komponenten oppfører seg likt med den opprinnelige komponenten ved å koble begge to til samme testbenk. Vi fekk problem i overgangane når vi testa kontinuerlig, så vi løyste problemet ved å berre teste kvart naonosekund. Bortsett frå dei første 50 nanosekunda (sjå grunn over) kan vi sjå at begge komponetane gir ut samme utsignal. Vi prøvde å bruke samme enitynavn på begge komponentane med ulik arcitechture, men fekk berre lov å kompilere og ikkje simulere. Vi kan derfor konkludere med at desse må ha ulike navn. ==Kode== ===Kode til add_sub_alu.vhd=== <pre> LIBRARY ieee; USE ieee.std_logic_1164.All; USE ieee.std_logic_unsigned.all; ENTITY add_sub_alu IS PORT ( clk : IN std_logic; rst : IN std_logic; enable_in : IN std_logic; start : IN std_logic; enable : IN std_logic; do_add : IN std_logic; do_subtract : IN std_logic; do_hold : IN std_logic; data_in : IN std_logic_vector(3 DOWNTO 0); data_out : OUT std_logic_vector(3 DOWNTO 0) BUS); END add_sub_alu; ARCHITECTURE algorithm OF add_sub_alu IS TYPE states IS (hold, reset, add, subtract); SIGNAL state_var : states; SIGNAL reg, int_reg : std_logic_vector(3 DOWNTO 0); SIGNAL latched_data_in : std_logic_vector(3 DOWNTO 0); BEGIN latch: PROCESS (enable_in, data_in)is BEGIN IF (enable_in = '1') THEN latched_data_in <= data_in; END IF; END PROCESS latch; fsm: PROCESS (clk, rst) is BEGIN IF (rst = '0') THEN state_var <= reset; ELSIF rising_edge(clk) THEN CASE state_var IS WHEN hold => IF (start = '1') THEN state_var <= reset; END IF; WHEN reset => IF (do_add = '1') THEN state_var <= add; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN add => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_subtract = '1') THEN state_var <= subtract; END IF; WHEN subtract => IF (do_hold = '1') THEN state_var <= hold; ELSIF (do_add = '1') THEN state_var <= add; END IF; WHEN OTHERS => state_var <= reset; END CASE; END IF; END PROCESS fsm; alu: PROCESS (state_var, latched_data_in, reg)is BEGIN CASE state_var IS WHEN add => int_reg <= reg + latched_data_in; WHEN subtract => int_reg <= reg - latched_data_in; WHEN reset => int_reg <= (others => '0'); WHEN hold => int_reg <= reg; WHEN OTHERS => int_reg <= reg; END CASE; END PROCESS alu; mem: PROCESS (clk) is BEGIN IF rising_edge(clk) THEN reg <= int_reg; END IF; END PROCESS mem; tri: PROCESS (enable, reg) is BEGIN FOR i IN 3 DOWNTO 0 LOOP IF (enable = '1') THEN data_out(i) <= reg(i); ELSE data_out(i) <= 'Z'; END IF; END LOOP; END PROCESS tri; END algorithm;</pre> ===Koden til alu_tb.vhdl=== <pre> library ieee; use ieee.std_logic_1164.all; library work; use work.all; entity alu_tb is end entity alu_tb; architecture struct of alu_tb is --Deklaring av signal som skal koblast til komponentane. --Alle innsignal er felles, medan vi har 2 forskjellige utsignal. signal clk : std_logic; signal reset : std_logic; signal enable_in : std_logic; signal start : std_logic; signal enable : std_logic; signal do_add : std_logic; signal do_subtract : std_logic; signal do_hold : std_logic; signal data_in : std_logic_vector(3 downto 0); signal data_out : std_logic_vector(3 downto 0); signal data_out_synt : std_logic_vector(3 downto 0); begin --Deklarer komponenten alu. alu : entity add_sub_alu(algorithm) --Kobler signala til den opprinnelige komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out); --Deklarer komponenten alu_synt. alu_synt : entity add_sub_alu_synth(structure) --Kobler signala til den synthiserte komponenten. port map ( clk => clk, rst => reset, enable_in => enable_in, start => start, enable => enable, do_add => do_add, do_subtract => do_subtract, do_hold => do_hold, data_in => data_in, data_out => data_out_synt); --Klokkegenerator clock_gen : process begin clk <= '0', '1' after 50 ns; wait for 100 ns; end process clock_gen; --Setter testvektorane. reset <= '0', '1' after 60 ns; enable <= '1', '0' after 900 ns; enable_in <= '1', '0' after 400 ns; start <= '1', '0' after 300 ns; do_add <= '1', '0' after 660 ns; do_subtract <= '0'; do_hold <= '0'; data_in <= X"3"; --Test process for å samanlikne utsignala kvart nanosekund. test : process begin wait for 1 ns; assert (data_out = data_out_synt) report "Data ut er ulik" severity Error; end process test; end architecture struct; </pre> [[Category:Mikroelektronikk]] c9544169c492ad1b192f553d873f37184d6c9cb2 Bitvis UVVM VHDL Verification Component Framework 0 481 2903 2836 2024-02-13T12:14:01Z Nfyku 4 /* Simulation */ wikitext text/x-wiki This wiki page is heavily based on the Powerpoint-presentation found [http://bitvis.no/media/15298/Simple_TB_step_by_step.pps here].<ref>UVVM LICENSE AGREEMENT IMPORTANT - READ BEFORE USING OR COPYING. THIS IS THE MIT LICENSE, see https://opensource.org/licenses/MIT ------------------------------------------------------------------ Copyright (c) 2016 by Bitvis AS Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</ref> The presentation can also be found in the uvvm_util folder. == Introduction == Bitvis UVVM VVC Framework is a complete framework for making VHDL testbenches for verification of FPGA and ASIC desing. You can download the complete code-base, examples and simulations scripts from the [https://github.com/UVVM/UVVM_All Bitvis github]. === What's in the folders? === [[File:20160302215840!1.png|thumb]] The download includes severals folders: * bitvis_irqc - example VHDL design + testbench * bitvis_uart - example VHDL design + testbench * bitvis_vip_sbi - Verification IP(VIP) for simple bus interface(SBI) * bitvis_vip_uart - VIP for UART TX and RX * uvvm_util - UVVM utility library - sufficient for simple testbenches * uvvm_vvc_framework - Framework for more advanced tutorials === IRQC === [[File:irqc.png|thumb]] The provided example VHDL design is a simple interrupt controller with several internal registers, a bus interface and some input and output signals. [[File:irqc2.png|350px]] == UVVM Utility Library - Testbench creation == Copy the folders bitvis_irqc, bitvis_vip_sbi and uvvm_util to another location before editing the files. === Generate TB entity with DUT instantiated === Our TB entity can in many cases be generated from several tools. Notepad++ (among other) supports plugins that enables copying an entity and pasting it as an instantiation, and also as a complete testbench template. However, we will change some of our signals so that they fit the VIP SBI BFM. The signals to and from the CPU will be converted to t_sbi_if record, which is a type that includes all the SBI signals (cs, addr, rd, wr, wdata, ready and rdata). <pre> --Standard libraries library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; -- Library enabling control of the simulation from VHDL. Eg. std.env.stop library STD; use std.env.all; -- Obviously the UVVM library library uvvm_util; context uvvm_util.uvvm_util_context; -- We will use this library later when implementing the Bus Functional Model -- Includes among much else the record type t_sbi_if and many functions -- If other buses are used, you will have to change this library library bitvis_vip_sbi; use bitvis_vip_sbi.sbi_bfm_pkg.all; -- This file includes definitions of everything from registers to record types use work.irqc_pif_pkg.all; -- Test case entity entity irqc_tb is end entity; -- Test case architecture architecture func of irqc_tb is -- DSP interface and general control signals signal clk : std_logic := '0'; signal arst : std_logic := '0'; -- CPU interface -- t_sbi_if is from the verification IP SBI -- init_sbi_if_signals initialize the inputs to 0 and the outputs to Z signal sbi_if : t_sbi_if(addr(2 downto 0), wdata(7 downto 0), rdata(7 downto 0)) := init_sbi_if_signals(3, 8); -- Interrupt related signals signal irq_source : std_logic_vector(C_NUM_SOURCES-1 downto 0) := (others => '0'); signal irq2cpu : std_logic := '0'; signal irq2cpu_ack : std_logic := '0'; begin ----------------------------------------------------------------------------- -- Instantiate DUT ----------------------------------------------------------------------------- i_irqc: entity work.irqc port map ( -- DSP interface and general control signals clk => clk, arst => arst, -- CPU interface cs => sbi_if.cs, -- NOTICE THE SIGNALS ARE NOW SBI_IF addr => sbi_if.addr, wr => sbi_if.wena, rd => sbi_if.rena, din => sbi_if.wdata, dout => sbi_if.rdata, -- Interrupt related signals irq_source => irq_source, irq2cpu => irq2cpu, irq2cpu_ack => irq2cpu_ack ); end func; </pre> === Add support process for clock generation === We now have to add a support process that controls the clock. This has to allow enabling/disabling from the test sequencer. We add the following before "begin" in our architecture: <pre> -- Added for clock generation signal clock_ena : boolean := false; constant C_CLK_PERIOD : time := 10 ns; procedure clock_gen( signal clock_signal : inout std_logic; signal clock_ena : in boolean; constant clock_period : in time ) is variable v_first_half_clk_period : time := C_CLK_PERIOD / 2; begin loop if not clock_ena then wait until clock_ena; end if; wait for v_first_half_clk_period; clock_signal <= not clock_signal; wait for (clock_period - v_first_half_clk_period); clock_signal <= not clock_signal; end loop; end; </pre> Our clock can now be activated from the test sequencer (this will be added in the next step): <pre> -- After begin in the architecture clock_gen(clk, clock_ena, C_CLK_PERIOD); -- Inside the test sequencer process clock_ena <= true; </pre> === Add test sequencer process === The next step is to add the test sequencer process. This process controls everything from initialization to termination of the simulation. <pre> -- Set upt clock generator clock_gen(clk, clock_ena, C_CLK_PERIOD); ------------------------------------------------ -- PROCESS: p_main ------------------------------------------------ p_main : process -- The scope tells you where log messages originates - C_SCOPE tells us they originate from the default test sequencer scope constant C_SCOPE : string := C_TB_SCOPE_DEFAULT; -- This is where we will add some procedures later to simplify the tests begin --Print the configuration to the log report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); --disable_log_msg --enable_log_msg(ID_LOG_HDR); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); ------------------------------------------------------------ clock_ena <= true; -- to start clock generator ------------------------------------------------------------ -- End the simulation wait for 1000 ns; -- to allow some time for completion report_alert_counters(FINAL); -- Report final counters and print conclusion for simulation (Success/Fail) log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); --Finish the simulation std.env.stop; wait; -- to stop completely end process p_main; </pre> ==Simulation== We now have the skeleton of the testbench, which we will develop further. But now, let's see if everything works. Bitvis have created simulation scripts for the IRQC example that compiles everything we need, from the source files of the VHDL design, to the testbench (if you called the file irqc_tb.vhd and placed it in the tb-folder) and the SBI BFM and the UVVM library. Open up QuestaSim/ModelSim. Change directory to the script folder (where you have copied the UVVM files), for example in phys321/bitviswiki.....: <pre> cd ~/phys321/bitviswiki/bitvis_irqc/script do compile_and_sim_all.do </pre> This will present our result in the transcript windows, but also write _Log.txt file which includes all the information we have asked for. We see that we get the results from the following code: <pre> report_global_ctrl(VOID); report_msg_id_panel(VOID); enable_log_msg(ALL_MESSAGES); log(ID_LOG_HDR, "Start Simulation of TB for IRQC", C_SCOPE); report_alert_counters(FINAL); log(ID_LOG_HDR, "SIMULATION COMPLETED", C_SCOPE); </pre> Commenting these out will result in an empty log. == Verbosity control == We want to able to control the amount of information in our logs, and the framework enables us to prioritize messages based on ID. This makes it easy to turn on or off the information we want. To turn on a specific ID <pre> enable_log_msg(IDNAME); </pre> Turn off: <pre> disable_log_msg(IDNAME); </pre> For writing a message to a certain log ID: <pre> log(IDNAME, "MESSAGE HERE", C_SCOPE); </pre> Remember that C_SCOPE just tells us that the message originated from the default scope and will look like "TB seq." in the log file. Exampled IDs: * ID_LOG_HDR, -- ONLY allowed in test sequencer, Log section headers * ID_SEQUENCER, -- ONLY allowed in test sequencer, Normal log (not log headers) * ID_BFM, -- Used inside a BFM (to log BFM access) * ID_CLOCK_GEN, -- Used for logging when clock generators are enabled or disabled * ALL_MESSAGES -- Applies to ALL message ID apart from ID_NEVER You'll find all the different ID's in the UVVM Utility Library Quick Reference or defined in uvvm_util/adaptions_pkg.vhd. This also where C_TB_SCOPE_DEFAULT is defined. == Implement first tests == [[File:tb.png|thumb|upright=0.35]] We want to check and verify that our testbench is up and running and to verify our first tests of the DUT. This means that we have to able to set all our signals passive, apply a reset signal and then check the default outputs of the DUT. Instead of setting all our signals passive one-by-one in our test sequencer we declare a procedure in our p_main process(this is done before begin): <pre> procedure set_inputs_passive( dummy : t_void) is --dummy variable is included only to allow calling the procedure with parenthesis for readability begin sbi_if.cs <= '0'; sbi_if.addr <= (others => '0'); sbi_if.wena <= '0'; sbi_if.rena <= '0'; sbi_if.wdata <= (others => '0'); irq_source <= (others => '0'); irq2cpu_ack <= '0'; log(ID_SEQUENCER_SUB, "All inputs set passive", C_SCOPE); end; </pre> Note that the procedure declaration also includes a dummy variable parameter. This means that we will be able to call the procedure with the more readable: <pre> set_inputs_passive(VOID); </pre> Rather than: <pre> set_inputs_passive; </pre> which is more ambigious. We may also would like to send pulses on different signals, f.ex. sending a pulse on our reset to see if it behaves like intended. We therefore can include a pulse procedure: <pre> procedure pulse( signal target : inout std_logic_vector; constant pulse_value : in std_logic_vector; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= pulse_value; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= pulse_value; wait for 0 ns; -- Delta cycle only end if; target(target'range) <= (others => '0'); log(ID_SEQUENCER_SUB, "Pulsed to " & to_string(pulse_value, HEX, AS_IS, INCL_RADIX) & ". " & msg, C_SCOPE); end; </pre> In the above example the test sequencer is required to inform the procedure of what value the pulse is to take. The call to the procedure would take the following form: <pre> pulse(arst, 'Z', clk, 10, "Log message - Im pulsing the value 'Z'"); </pre> But a more specific overload can be created where pulse always takes value '1': <pre> procedure pulse( signal target : inout std_logic; signal clock_signal : in std_logic; constant num_periods : in natural; constant msg : in string ) is begin if num_periods > 0 then wait until falling_edge(clock_signal); target <= '1'; for i in 1 to num_periods loop wait until falling_edge(clock_signal); end loop; else target <= '1'; wait for 0 ns; -- Delta cycle only end if; target <= '0'; log(ID_SEQUENCER_SUB, msg, C_SCOPE); end; </pre> These procedures can now be called directly from our test sequence: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "pulsed reset-signal - active for 10T"); </pre> To check signal values we can use the built-in check function check_value(): <pre> check_value(irq2cpu, 'X', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); </pre> The above call checks if the signal irq2cpu is 'X', and obviously fail if everything works correctly and gives the following message: [[File:error.png|700px]] If we want we can change the number of errors logged before the simulation stops: <pre> set_alert_stop_limit(ERROR, 3); </pre> We now have all the tools needed for the first tests in our sequencer: <pre> set_inputs_passive(VOID); pulse(arst, clk, 10, "Pulsed reset-signal - active for 10T"); check_value(C_NUM_SOURCES > 0, FAILURE, "Must be at least 1 interrupt source", C_SCOPE); check_value(C_NUM_SOURCES <= 8, TB_WARNING, "This TB is only checking IRQC with up to 8 interrupt sources", C_SCOPE); log(ID_LOG_HDR, "Check defaults on output ports", C_SCOPE); ------------------------------------------------------------ check_value(irq2cpu, '0', ERROR, "Interrupt to CPU must be default inactive", C_SCOPE); check_value(sbi_if.rdata, x"00", ERROR, "Register data bus output must be default passive"); </pre> This will give us the following log: [[File:sim.png|800px]] This information may only interesting initially and for debug, and can be turned on or off by use of ID. == Subprograms == Some of our testbench code will be repeated several times and the testbench may therefore benefit from creating several subprograms. Obvious examples for our IRQC is: - Register access - Signal checkers - Interrupt source pulsing? - Interrupt acknowledge pulsing? - (Report/log method) - (Alert-handling) - (reset, set_passive, ...) We've already created and declared set_passive and pulse procedures, but we could f.ex create overloads for UVVM procedures: <pre> -- Log overloads for simplification procedure log( msg : string) is begin log(ID_SEQUENCER, msg, C_SCOPE); end; </pre> This exact function is already overloaded in the UVVM packages, so including this in our testbench would produce compilation errors. So, let's not include it, but view it as an example of how it's done. Let's say that it is probable that we'll want to change the number of interrupt sources that the controller can handle. We will then want to able to easily change vectors to the appropriate size. One way is to declare procedures that can trim and fit vectors. This way we can simply change a constant to change the number of sources. <pre> subtype t_irq_source is std_logic_vector(C_NUM_SOURCES-1 downto 0); -- Trim (cut) a given vector to fit the number of irq sources (i.e. pot. reduce width) function trim( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return t_irq_source is variable v_result : std_logic_vector(source'length-1 downto 0) := source; begin return v_result(num_bits-1 downto 0); end; -- Fit a given vector to the number of irq sources by masking with zeros above irq width function fit( constant source : std_logic_vector; constant num_bits : positive := C_NUM_SOURCES) return std_logic_vector is variable v_result : std_logic_vector(source'length-1 downto 0) := (others => '0'); variable v_source : std_logic_vector(source'length-1 downto 0) := source; begin v_result(num_bits-1 downto 0) := v_source(num_bits-1 downto 0); return v_result; end; </pre> All IRQC-dedicated subprograms should be declared locally, but more common (f.ex bus-specific) should be declared in common package that can be shared with other. == Register access == To access the IRQC's registers we need to go through the actual process of writing and reading data from them. Fortunately, Bitvis have already taken the responsibility of writing the BFM for the SBI. This doesn't mean that we doesn't have to understand what's going on, since we'll have to write our own BFM's for other buses that we use(Avalon, AXI, etc). '''January 2017 Bitvis announced that they released VVC for Avalon-MM and AXI4-lite.''' So we should investigate the BFM procedures. We want to check register values: <pre> procedure sbi_check ( constant addr_value : in unsigned; constant data_exp : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant alert_level : in t_alert_level := error; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_check"; constant proc_call : string := "sbi_check(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_exp, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); -- Helper variables variable v_data_value : std_logic_vector(rdata'length - 1 downto 0); variable v_check_ok : boolean; variable v_clk_cycles_waited : natural := 0; begin sbi_read(addr_value, v_data_value, msg, clk, cs, addr, rd, wr, ready, rdata, scope, msg_id_panel, config, proc_name); -- Compare values, but ignore any leading zero's if widths are different. -- Use ID_NEVER so that check_value method does not log when check is OK, -- log it here instead. v_check_ok := check_value(v_data_value, data_exp, alert_level, msg, scope, HEX_BIN_IF_INVALID, SKIP_LEADING_0, ID_NEVER, msg_id_panel, proc_call); if v_check_ok then log(config.id_for_bfm, proc_call & "=> OK, read data = " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); end if; end procedure; </pre> We see that sbi_check() calls sbi_read() before it checks if the read value is the expected value. <pre> procedure sbi_read ( constant addr_value : in unsigned; variable data_value : out std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal rdata : in std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT; constant proc_name : in string := "sbi_read" -- overwrite if called from other procedure like sbi_check ) is constant proc_call : string := "sbi_read(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalize to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_data_value : std_logic_vector(data_value'range); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '0'; rd <= '1'; addr <= v_normalised_addr; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; rd <= '0'; v_data_value := rdata; data_value := v_data_value; if proc_name = "sbi_read" then log(config.id_for_bfm, proc_call & "=> " & to_string(v_data_value, HEX, SKIP_LEADING_0, INCL_RADIX) & ". " & msg, scope, msg_id_panel); else -- Log will be handled by calling procedure (e.g. sbi_check) end if; end procedure; </pre> We don't want to (and probably shouldnt) call the sbi_check and providing all the parameters each time. Some of this can be solved by the overloads with more standard parameters, and with our own check procedures declared locally in our testbench: <pre> procedure check( constant addr_value : in natural; constant data_exp : in std_logic_vector; constant alert_level : in t_alert_level; constant msg : in string) is begin sbi_check(to_unsigned(addr_value, sbi_if.addr'length), data_exp, msg, clk, sbi_if, alert_level, C_SCOPE); end; </pre> The write procedure is also very handy and should be understood: <pre> procedure sbi_write ( constant addr_value : in unsigned; constant data_value : in std_logic_vector; constant msg : in string; signal clk : in std_logic; signal cs : inout std_logic; signal addr : inout unsigned; signal rd : inout std_logic; signal wr : inout std_logic; signal ready : in std_logic; signal wdata : inout std_logic_vector; constant scope : in string := C_SCOPE; constant msg_id_panel : in t_msg_id_panel := shared_msg_id_panel; constant config : in t_sbi_bfm_config := C_SBI_BFM_CONFIG_DEFAULT ) is constant proc_name : string := "sbi_write"; constant proc_call : string := "sbi_write(A:" & to_string(addr_value, HEX, AS_IS, INCL_RADIX) & ", " & to_string(data_value, HEX, AS_IS, INCL_RADIX) & ")"; -- Normalise to the DUT addr/data widths variable v_normalised_addr : unsigned(addr'length-1 downto 0) := normalize_and_check(addr_value, addr, ALLOW_WIDER_NARROWER, "addr_value", "sbi_core_in.addr", msg); variable v_normalised_data : std_logic_vector(wdata'length-1 downto 0) := normalize_and_check(data_value, wdata, ALLOW_NARROWER, "data_value", "sbi_core_in.wdata", msg); variable v_clk_cycles_waited : natural := 0; begin wait_until_given_time_after_rising_edge(clk, config.clock_period/4); cs <= '1'; wr <= '1'; rd <= '0'; addr <= v_normalised_addr; wdata <= v_normalised_data; wait for config.clock_period; while (config.use_ready_signal and ready = '0') loop if v_clk_cycles_waited = 0 then log(config.id_for_bfm_wait, proc_call & " waiting for response (sbi ready=0)" & msg, scope, msg_id_panel); end if; wait for config.clock_period; v_clk_cycles_waited := v_clk_cycles_waited + 1; check_value(v_clk_cycles_waited <= config.max_wait_cycles, config.max_wait_cycles_severity, ": Timeout while waiting for sbi ready", scope, ID_NEVER, msg_id_panel, proc_call); end loop; cs <= '0'; wr <= '0'; log(config.id_for_bfm, proc_call & " completed. " & msg, scope, msg_id_panel); end procedure; </pre> We will create a local overload of this too: <pre> procedure write( constant addr_value : in natural; constant data_value : in std_logic_vector; constant msg : in string) is begin sbi_write(to_unsigned(addr_value, sbi_if.addr'length), data_value, msg, clk, sbi_if, C_SCOPE); end; </pre> We also need to set the sbi_if.ready signal high for this to work: <pre> clock_generator(clk, clock_ena, C_CLK_PERIOD, "IRQC TB clock"); -- Insert this here by the clock generator sbi_if.ready <= '1'; -- always ready in the same clock cycle. </pre> All this enables us to handle transactions at a high level. See Bitvis documentation for how to write your own BFM and what it should include(sanity checks, etc). [[File:bfm.png|550px]] == Checking register write and read == Now we're enabled to write to and read from the registers. The register addresses are defined in the IRQC package file irqc_pif_bkg.vhd. Notice that we also use the previously declared overloaded version of log() and fit(). <pre> log(ID_LOG_HDR, "Check register defaults and access (write + read)", C_SCOPE); ------------------------------------------------------------ log("\nChecking Register defaults"); check(C_ADDR_IRR, x"00", ERROR, "IRR default"); check(C_ADDR_IER, x"00", ERROR, "IER default"); check(C_ADDR_IPR, x"00", ERROR, "IPR default"); check(C_ADDR_IRQ2CPU_ALLOWED, x"00", ERROR, "IRQ2CPU_ALLOWED default"); log("\nChecking Register Write/Read"); write(C_ADDR_IER, fit(x"55"), "IER"); check(C_ADDR_IER, fit(x"55"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"AA"), "IER"); check(C_ADDR_IER, fit(x"AA"), ERROR, "IER pure readback"); write(C_ADDR_IER, fit(x"00"), "IER"); check(C_ADDR_IER, fit(x"00"), ERROR, "IER pure readback"); </pre> This check will give us a nice log if everything turns out ok: [[File:sim2.png|700px]] However, if there's an error: [[File:error2.png|700px]] == Further tests == Now that we've tested register read/write, we should test the trigger/clear mechanism. No further adding of procedures are necessary. <pre> log(ID_LOG_HDR, "Check register trigger/clear mechanism", C_SCOPE); ------------------------------------------------------------ write(C_ADDR_ITR, fit(x"AA"), "ITR : Set interrupts"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"71"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"8E"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"85"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"0A"), ERROR, "IRR"); write(C_ADDR_ITR, fit(x"55"), "ITR : Set more interrupts"); check(C_ADDR_IRR, fit(x"5F"), ERROR, "IRR"); write(C_ADDR_ICR, fit(x"5F"), "ICR : Clear interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR"); </pre> The UVVM Utility Library provides all necessary functions and procedures to do further tests. F.ex. we should send pulses on the irq_source signal to check if the design behaves correctly. <pre> log(ID_LOG_HDR, "Check interrupt sources, IER, IPR and irq2cpu", C_SCOPE); ------------------------------------------------------------ log("\nChecking interrupts and IRR"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); pulse(irq_source, trim(x"AA"), clk, 1, "Pulse irq_source 1T"); check(C_ADDR_IRR, fit(x"AA"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"01"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"A1"), clk, 1, "Repeat same interrupts"); check(C_ADDR_IRR, fit(x"AB"), ERROR, "IRR after irq pulses"); pulse(irq_source, trim(x"54"), clk, 1, "Add remaining interrupts"); check(C_ADDR_IRR, fit(x"FF"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"AA"), "ICR : Clear half the interrupts"); pulse(irq_source, trim(x"A0"), clk, 1, "Add more interrupts"); check(C_ADDR_IRR, fit(x"F5"), ERROR, "IRR after irq pulses"); write(C_ADDR_ICR, fit(x"FF"), "ICR : Clear all interrupts"); check(C_ADDR_IRR, fit(x"00"), ERROR, "IRR after clearing all"); </pre> === Check stable === Another test provided by UVVM is check_stable(). This function enables us to test if a signal is holding the same value for a minimum provided time. We must declare a variable that holds the time from which we want to test if the signal is stable: <pre> v_time_stamp := now; -- time from which irq2cpu should be stable off until triggered </pre> Later we're now able to test if the signal has been holding the same value the whole period: <pre> check_stable(irq2cpu, (now - v_time_stamp), ERROR, "No spikes allowed on irq2cpu", C_SCOPE); </pre> Remember to declare the variable in the process: <pre> variable v_time_stamp : time := 0 ns; </pre> === Await value === To check if a signal gets the expected value within a specified time value we use await_vale(). The test below throws an error if irq2cpu doesn't obtain the value '1' within 0 ns(!). Therefore expected immediately: <pre> await_value(irq2cpu, '1', 0 ns, C_CLK_PERIOD, ERROR, "Interrupt expected immediately", C_SCOPE); </pre> === Other useful functions === Check the UVVM Utility Library Quick Reference for syntax details. ==== await_change() ==== Expects and waits for a change on the given signal, inside a given time window. ==== check_value_in_range() ==== Throws an error of the signal value is outside the specified minimum and maximum values. == UVVM VVC == Guide coming.... == UVVM LICENCE AGREEMENT == {{reflist}} [[Category:Mikroelektronikk]] b15b4ec244c65ff4f8cc44d4ed4de13aaed3cc98 Transistor operating point printer 0 466 2906 2556 2024-05-30T11:46:04Z Nfyku 4 wikitext text/x-wiki = DC operating parameters from simulation = This script can be used to print the operating point parameters of all transistors in your design and save them to a file. If you just want to view them in Virtusoso have a look at this guide instead: [[DCoperatingparameters]] == Get the DC operating points from a previous simulation == Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a test with DC analysis, and remember to check the box with "Save DC Operating Point" : [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] == Copy the file to your computer and convert the values == After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> or alternatively to get the file out from mikroserver to another computer try this: Create a file named "Makefile" and put this into it: # target that is the first (and default) and does all the stuff below all: get fix clean # gets the file from mikroserver3 and copies it to your computer in the root of your homefolder get : scp my_user_name@mikroserver:~/tsmc/transistors.csv ~/transistors_raw.csv # converts transitors.csv to a copy where all the postfixes for the SI units generated from Virtuoso (m, f, K etc), has been replaced with E-3, E-15, E+3 etc, so the values are useable in LibreOffice fix : sed -e 's/\([0-9]\+\)m/\1E-3/g' -e 's/\([0-9]\+\)u/\1E-6/g' -e 's/\([0-9]\+\)n/\1E-9/g' -e 's/\([0-9]\+\)p/\1E-12/g' -e 's/\([0-9]\+\)f/\1E-15/g' -e 's/\([0-9]\+\)a/\1E-18/g' -e 's/\([0-9]\+\)z/\1E-21/g' -e 's/\([0-9]\+\)y/\1E-24/g' -e 's/\([0-9]\+\)K/\1E+3/g' -e 's/\([0-9]\+\)M/\1E+6/g' -e 's/\([0-9]\+\)G/\1E+9/g' -e 's/\([0-9]\+\)T/\1E+12/g' transistors_raw.csv > transistors.csv # removes the not-fixed copy clean: rm transistors_raw.csv Modify the scp-command to use * The username and the correct microserver in the scp-command * change the folder on mikroserver where the transistors.csv is created, default is /home/$user/tsmc/ * change the local folder where you want your copy to be placed, default is /home/$user/ Now you can type <code>make</code> in the folder you created the Makefile and the latestst simulation data will appear in your homefolder. == Open the file in Libre Office == The resulting transistors.csv can then be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] == Troubleshooting == For the scp-command to work without password you have to set up your connection as described in [[MikroserverSetup]] [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 059594a1842433397809334847916a41f024f02a 2910 2906 2024-05-30T11:56:01Z Nfyku 4 wikitext text/x-wiki = DC operating parameters from simulation = This script can be used to print the operating point parameters of all transistors in your design and save them to a file. If you just want to view them in Virtusoso have a look at this guide instead: [[DCoperatingparameters]] == Get the DC operating points from a previous simulation == Navigate to the folder you want to save the script in (this tutorial uses the home (./) directory) and create a new file in the terminal by entering <code> touch transistors.ocn </code>. Open the file by writing <code> gedit transistors.ocn & </code> and copy the following script into the document. Change ./transistors.csv in the script if you want another output file name and/or location. Save the file. selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("gm" "gmb" "gmoverid" "gds" "id" "idsat" "vth" "region" "cgs" "cgd" "self_gain" "type" "vds" "vdsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) For the IHP design kit use: selectResult('dcOpInfo) report(?output "./transistors.csv" ?param list("model" "gm" "gmb" "gds" "ids" "idsat" "vth" "region" "cgs" "cgd" "vds" "vsat" "vgs") ?format "spice" ?maxLineWidth 1000) file = outfile("./transistors.csv" "a") fprintf(file "\n\nRegion 0 is cutoff.\nRegion 1 is linear.\nRegion 2 is saturation .\nRegion 3 is subthreshold.\nRegion 4 is breakdown.\n\nType 0 is nMOS. \nType 1 is pMOS.") close(file) This script uses the results from the previous Debug Test (from ADE XL Test Editor). Before running the script, run a test with DC analysis, and remember to check the box with "Save DC Operating Point" : [[File:Run_debug_simulation.png | 500px]] After running DC analysis, run the script by entering the following into the Virtuoso Log Window (with file name and location as mentioned above): <code>load("./transistors.ocn")</code> [[File:Run_transistors_script.png]] == Copy the file to your computer and convert the values == After running the script, you can open the results file from the terminal using for example: <code> gedit transistors.csv & </code> or alternatively to get the file out from the mikroserver you use to another computer try this: Create a file named "Makefile" and put this into it: # target that is the first (and default) and does all the stuff below all: get fix clean # gets the file from your mikroserver and copies it to your computer in the root of your homefolder get : scp my_user_name@mikroserver:~/tsmc/transistors.csv ~/transistors_raw.csv # converts transitors.csv to a copy where all the postfixes for the SI units generated from Virtuoso (m, f, K etc), has been replaced with E-3, E-15, E+3 etc, so the values are useable in LibreOffice fix : sed -e 's/\([0-9]\+\)m/\1E-3/g' -e 's/\([0-9]\+\)u/\1E-6/g' -e 's/\([0-9]\+\)n/\1E-9/g' -e 's/\([0-9]\+\)p/\1E-12/g' -e 's/\([0-9]\+\)f/\1E-15/g' -e 's/\([0-9]\+\)a/\1E-18/g' -e 's/\([0-9]\+\)z/\1E-21/g' -e 's/\([0-9]\+\)y/\1E-24/g' -e 's/\([0-9]\+\)K/\1E+3/g' -e 's/\([0-9]\+\)M/\1E+6/g' -e 's/\([0-9]\+\)G/\1E+9/g' -e 's/\([0-9]\+\)T/\1E+12/g' transistors_raw.csv > transistors.csv # removes the not-fixed copy clean: rm transistors_raw.csv Modify the scp-command to use * The username and the correct mikroserver in the scp-command * change the folder on mikroserver where the transistors.csv is created, default is /home/$user/tsmc/ * change the local folder where you want your copy to be placed, default is /home/$user/ Now you can type <code>make</code> in the folder you created the Makefile and the latestst simulation data will appear in your homefolder. == Open the file in Libre Office == The resulting transistors.csv can then be imported into LibreOffice Calc (similar to Microsoft Excel) using File->Open, then choose the .csv file and enter the settings as in the following image: [[File:Csv_import_libreoffice.png | 500px]] == Troubleshooting == For the scp-command to work without password you have to set up your connection as described in [[MikroserverSetup]] [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 5c76ee54ec20cf9f2375ddd40fc30fc17832b74a MikroserverSetup 0 614 2908 2759 2024-05-30T11:52:52Z Nfyku 4 wikitext text/x-wiki = Setup of connection to mikroservers= This setup process will allow you to connect to the mikroservers with one command without typing any password or long host names. == SSH key == To login to the server without having to type in your password every time, we can use SSH key pairs. The public key is stored on the server, and you have your private key stored on the UiB login server. To generate a key, type into the terminal ssh-keygen This will generate the files id_rsa and id_rsa.pub in the folder ~/.ssh, where the latter is the public key that needs to be stored on the server. Copy the key with your identity to any of the mikroservers (since the user environment is shared for each server, this will give you access to all the servers). You can do this manually, but the easiest way is to use the ssh-copy-id utility. NB: Replace USERNAME with your username and mikroserver with the full name of your preferred mikroserver. ssh-copy-id USERNAME@mikroserver You will be prompted your password. After the key is copied, you should be able to login with "ssh USERNAME@mikroserver" without having to enter your password. == Connection aliases == Now that you can login without typing your password, it is also convenient to set up aliases for the servers to connect quicker. To do this, type "gedit ~/.ssh/config" in the terminal. This will open up an empty file, and here you can store shorthand names and specific SSH settings for the connection, such as your username. Host mikroserver HostName mikroserver User USERNAME Port 22 ForwardX11 yes ForwardX11Trusted yes Copy and repeat this for each server in the same file, remembering to change the hostname to the full name of the corresponding mikroserver for each entry. ForwardX11 allows you to launch software on the server itself, while displaying the GUI remotely to the lab PC. After saving the file, you should be able to simply write "ssh mikroserver" in the terminal to login to the chosen mikroserver. Note: If you are attempting to do this step remotely from the UiB login server you need to use a terminal-based editor like Vim, or connect to the login-server with ssh -Y USERNAME@login.uib.no to enable the use of graphical editors such as gedit. == Automatic sourcing == There are two main files of sourcing scripts in a Linux environment. One is the file .bashrc, and the other is the file .profile. The difference in these is that the contents of .profile is executed upon login, and .bashrc is executed every time you access the terminal. .bashrc is not sourced to the system by itself upon login, so we need to source .bashrc in .profile manually to use it. This must be done after connecting to one of the mikroservers. echo "source ~/.bashrc" >> ~/.profile Scripts can be sourced either within .profile or .bashrc. This will make sure the scripts are loaded every time you log in, so you don't have to do it manually every time. == Accessing the lab software remotely on your private PC == You do not need to set up a VPN to access the lab software from home. By connecting to the mikroservers through the UiB loginserver with X11 forwarding enabled, you can run the software from any network. You can do this directly on Linux/macOS by using SSH in the bash terminal. For Windows, you will need to download the X server software [https://sourceforge.net/projects/xming/ Xming] to enable X11 forwarding. This install comes with PuTTY, an SSH client we will use to connect to the Linux based UiB server. === Linux/macOS === The process is the same for both Linux and macOS, except that for macOS you first have to install the X11 server software named [https://www.xquartz.org/ XQuartz]. Then, simply connect to the login server by typing ssh -Y USERNAME@login.uib.no The -Y enables trusted X11 forwarding. From here, you can "ssh mikroserver" just as you would from the lab PC and run software. The steps described above (SSH keys and config files) can be repeated on your personal Linux/macOS PC to simplify connecting to the UiB loginserver. On Linux, the configuration file is located in "~/.ssh/config" just as on the server, while on macOS it is located in "/private/etc/ssh/ssh_config". === Windows === Install Xming and make sure you include PuTTY in the install. Run Xming. It will start minimized, and does not require any setup. When first opening PuTTY, you will be presented with this configuration menu. Fill in the hostname "login.uib.no", but don't connect yet. [[File:Puttylogin.png]] Navigate to Connection -> SSH -> X11, and check Enable X11 forwarding, and type in "localhost:0.0" as X display location. [[File:Puttyx11.png]] Return to Session, and make sure connection type is set to SSH. Press "Default Settings" and Save to save this configuration for later. Press Open to connect to the server. Enter your username and password, and now you should be in the Linux terminal for the UiB login server. Try to run "gedit" to confirm that you can run a graphical interface. From here you can ssh to the mikroservers and launch software as on the lab computer. Confirm by running gedit on the mikroserver as well to see that you can tunnel X11 through the login server correctly. == Add mikroserver as a folder on your pc == Open up your home folder in Linux and in the bottom left corner click "Connect to Server" as shown in this picture: [[File:ConnectToServer.png|thumbnail]] as server address type: [sftp://mikroserver3/home/USERNAME sftp://mikroserver/home/USERNAME] to add your homefolder on mikroserver as a folder on your local PC for easy access to your files (for example the [[Transistor_operating_point_printer]]) To store this connection, right click the "mikroserver"-folder and click "Add Bookmark". The next time you just click the bookmark to open it. === Alternative way using scp/secure copy=== If for some reason the above doesn’t work you can try this: * connect to your mikroserver * locate the file you want to copy. i.e /home/USERNAME/picture.jpg * type this command scp picture.jpg USERNAME@login.uib.no:path/to/folder/to/copy/to * this will copy the file to your home folder on any UiB machine * To copy a folder scp -r NameOfFolder USERNAME@login.uib.no:path/to/folder/to/copy/to == Troubleshooting == * Make sure you have restarted your terminal (or source ~/.bashrc) if the commands doesn't work * You have to be either connected to the UiB loginserver or run the commands via the computers in the lab to be able to connect to the mikroservers * If you are using another shell like zsh or csh the aliases has to be in ~/.zshrc or ~/.cshrc instead of ~/.bashrc * Make sure you have replaced all the instances of USERNAME with your usename, i.e "abc0123" [[Category:Mikroelektronikk]] 73a8f02fb5a4f0a5a2780a29f2c5d8548cc8ed9c TSMC 130nm process 0 461 2909 2710 2024-05-30T11:54:37Z Nfyku 4 wikitext text/x-wiki =Cadence design with TSMC 130nm process= This tutorial will start from very basics in analog IC design then take you through the whole analog IC design process. Here is the outline of the analog IC design flow: # Schematic capture (Cadence tool) # Netlist extraction from schematic # Simulating using ELDO simulator and viewing results with EZWAVE (ELDO is a Mentor Graphic's tool for netlist level simulations) # Layout using Cadence # Signoff layout (DRC, LVS and parasitic extraction) using Calibre (Calibre is a Mentor Graphic's tool) ==Setup of Cadence== To start virtuoso one must first connect to the chosen mikroserver ssh -X mikroserver '''First''' time you should add the following line to your cds.lib-file by running this command: mkdir ~/tsmc echo "DEFINE tsmc13rf /eda/design_kits/tsmc_013/tsmc13rf" > ~/tsmc/cds.lib Then ('''each time''') run these commands to set up Cadence source /eda/cadence/2023-24/scripts/analog_flow.sh source /eda/cadence/eda_general_init.sh Virtuoso Mixed Signal Design Environment is started by issuing this command: virtuoso & === Troubleshooting === * Make sure you source the script from the correct year. For example 2023-24 and not 2016-17 * Make sure you are connected the the right mikroserver * Make sure you run virtuoso from the same folder as your 'cds.lib'-folder ('~/tsmc/') == Getting started == In the log window, choose "File > New > Library". In the "New Library" dialog box, you must give the library a name (for example TORLIB, as I did). You must also specify a technology file. Here you choose "Attach to an existing technology library". Then click the OK button. When asked for technology, choose "tsmc13rf". If you are using IHP instead, choose "SG13_dev". After successfully creating the new library, it is time to create your first design. In the log window, choose "File > New > Cellview". In the "Create New File" dialog box, you must give the design a name. You must also specify which library the design belongs to, and here you specify the library that you have just created. Choose to open the cell with "Schematics XL" and add a check-mark to always use this application if it is not checked. Now click OK, and the Virtuoso Schematic Editor should pop up. We will now draw a simple inverter design, as shown in the picture: [[File:virtuoso_schematic_editor.png|400px]] ==Entering the design== To create the inverter design, do the following: # Press 'i' or click on the "Instance" icon to invoke the transistors. The "Add Instance" dialog box will now pop up. In the "Library" field, click "Browse" to open the "Library Browser". In the library browser, choose "tsmc13rf" as library, "nmos3v" (for n-type transistor) or "pmos3v" (for p-type transistor) as cell and "spectre" as view. The cell is placed in the schematic by moving the cursor to the desired location and clicking the left mouse button. # To insert the voltage sources, pick the "vdc" cell from the "analogLib" library. Add one connected to vdd and gnd and one connected to the input. # To insert the ground and vdd nets, pick the "vdd" and "gnd" cells from the "analogLib" library. Here the view name should be "symbol", not "spectreS" (in fact, "symbol" is the only available option). # To connect the symbols, press 'w' or click the "Wire (narrow)" icon. Then use the left mouse button to click the nodes togeter, two by two. # To remove an instance or a wire, left click at the instance or wire that you want to remove, then press the "Delete" button on the keyboard. # To insert a pin, press 'p'. Choose a name for the pin in the dialog that occurs and click on the schematic to place it. Create one input and one output. # To change the properties of the icons, press 'q' or click at the "Properties" icon. Then click at the instances or nets that you want to modify. For the vdc source connected between vdd and gnd, set the "DC voltage" property to 3.3. # To check and save the schematic, press 'x' or click the "Check and save" icon. # If there are any errors or warnings, press ok and press 'g' or "Check->Find Marker" to view the errors. Make sure you have no errors or warnings before continuing. ==Simulating the design== # Open "Launch > ADE GXL" and press create new view. The "Virtuoso Analog Environment" should now come up. # Choose "Create > Test..." select the cell to simulate. # Choose "Outputs > To be plotted > Select on Schematic". Click at the "in" node connected to the inverter input and the "out" node connected to the output. # Choose "Analyses > Choose". We will now run a dc analysis to obtain the DC transfer characteristics of the inverter. Choose "Component parameter" as your sweep variable. Then click at "Select component". In the schematic, click at the input "vdc" instance. In the "Select Component Parameter" dialog box, choose dc as your sweep parameter. The sweep range should go from 0 to 3.3. [[File:select_comp_parameter.png|300px]] The analog environment should now look like this: [[File:analog_env_2.png|500px]] Switch to the "adexl" tab and choose the green run button. When the run is completed press the graph button beside the box that says "Replace". The outputs should look like this: [[File:plot_output_dc.png|600px]] To save your simulation settings, choose "Session > Save state" in the test editor windoe to save your state information under whatever file name you want. In a later session, you can reload your saved states using "Session > Load state". ==Generating a Symbol== Finally, we want to generate a symbol for our inverter. This symbol is needed if we want to use our inverter design inside another design (hierarchical design methodology). Select the schematic tab and choose "Create -> Create Cellview -> From Cellview". Press OK in the dialog that occurs. The pins should already be connected to the right positions in the symbol generator, so press OK here also and ths symbol editor will occur. Press the red X and delete the pre-created green square. Use the line tool and the circle tool to create the inverter symbol [[File:symbol.png|400px]] Save it by clicking the "Save and check" symbol or pressing 'shift+X'. [[Category:Mikroelektronikk]] [[Category:Integrated_Circuts]] 2ef22a662ea7a4bc6cd13e3f6435cbf982d1597f PHYS321 0 278 2911 2745 2024-06-10T08:56:50Z Nfyku 4 /* Nettressurser */ wikitext text/x-wiki == Fagressurser for bruk i PHYS321 == === Fagbøker === * [http://site.ebrary.com/lib/bergen/docDetail.action?docID=10053265 Essentials of Electronic Testing for Digital, Memory, and Mixed-Signal VLSI Circuits] === Nettressurser === * [http://www.ecs.umass.edu/ece/koren/arith/simulator/ Arithmetic Algorithms Simulators] * [http://en.wikipedia.org/wiki/Linear_feedback_shift_register Linear feedback shift register] * [https://robey.lag.net/2012/11/14/how-to-add-numbers-2.html How to add numbers (part 2)] ==== Cadence tutorials ==== * [http://www-classes.usc.edu/engr/ee-s/477p/cadencetutorial.pdf Inverter eksempel] * [https://www.youtube.com/watch?v=DPCu822wXPQ Inverter eksempel 1 youtube] * [https://www.youtube.com/watch?v=AIjGRzNIWC4 Inverter eksempel 2 youtube] * [https://www.youtube.com/watch?v=mQm88hoskkw Inverter eksempel 3 youtube] ==== Digilent Nexys 4 ==== * [https://reference.digilentinc.com/vivado:installation Install Vivado with free licence] * [https://reference.digilentinc.com/nexys:nexys4:gsg Getting started] * [https://reference.digilentinc.com/vivado Vivado - Xilinx Programming Environment - Board files, reference projects, etc] * [https://reference.digilentinc.com/nexys:nexys4:start Nexys 4 Resource center] ==== Using Vivado ==== * [[Install Vivado 2015.4 with free license]] * [[VGA controller VHDL code]] * [[Nexys4_Master.xdc]] * [[Using the VGA controller with block ram generator and clock wizard]] === Gamle øvingsoppgaver === [[Øvingsoppgaver PHYS321]] [[Category:Mikroelektronikk]] 35bbce4bc134c2da7a0830fcf7672c521af7aa8b PHYS222 0 202 2912 2764 2024-10-02T11:47:54Z Nfyku 4 Added some lectures in Tutorials and lectures wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] ==== Tutorials and lectures ==== * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] * [https://www.youtube.com/playlist?list=PLc7Gz02Znph-c2-ssFpRrzYwbzplXfXUT New Analog Circuit Design (By Prof. Ali Hajimiri, Caltech)] * [https://www.khanacademy.org/science/electrical-engineering Electrical engineering (Khan Academy)] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [https://www.youtube.com/watch?v=Jctk0DI7YP8 Understanding The FinFet Semiconductor Process] * [https://youtu.be/MvbP_TizoNs Problems and Solutions at 7nm] * [https://youtu.be/Qo2ywUURSKg A tour inside Intel Corporation's D1D factory] * [https://www.youtube.com/watch?v=W3rfVpkNquA Intel Ivy Bridge 22nm FinFET Process Fabrication] * [https://youtu.be/ApWOf6J858Y Integrated circuit scaling to 10 nm and beyond - Mark Bohr, Intel Senior Fellow] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] c8b962dc1dd597e4e7ed5627cd497e17cf3d9d0f 2913 2912 2024-10-02T11:48:20Z Nfyku 4 wikitext text/x-wiki == Fagressurser for bruk i PHYS222 og PHYS223 == === Fagbøker === * [http://www.cmosvlsi.com/ CMOS VLSI Design: A Circuits and Systems Perspective] * [http://www.ece.ucdavis.edu/sscrl/book_corrections/ghlm/corr/ List of known errors and corrections for Analysis and Design of Analog Integrated Circuits, Fourth Edition] === Tutorials and lectures === * [http://www.electronics-tutorials.ws Basic Electronics Tutorials] * [https://www.youtube.com/playlist?list=PLc7Gz02Znph-c2-ssFpRrzYwbzplXfXUT New Analog Circuit Design (By Prof. Ali Hajimiri, Caltech)] * [https://www.khanacademy.org/science/electrical-engineering Electrical engineering (Khan Academy)] === Noise === * [http://ieeexplore.ieee.org/search/srchabstract.jsp?arnumber=261888&isnumber=6598&punumber=101&k2dockey=261888@ieeejrns&query=261888%3Cin%3Earnumber&pos=0 White noise in MOS transistors and resistors] * [http://www.stat.ualberta.ca/people/schmu/preprints/poisson.pdf Shark attacks and the Poisson approximation] * [https://www.k-state.edu/edl/docs/pubs/technical-resources/Technote1.pdf Equivalent Noise Bandwidth] === Halvlederfysikk === * [https://www.youtube.com/watch?v=Coy-WRCfems How does a diode work?] * [http://hyperphysics.phy-astr.gsu.edu/HBASE/solids/semcn.html Hyperphysics om halvledere] * [http://jas.eng.buffalo.edu/index.html Semiconductor Simulation Applets] * [http://pveducation.org/ Photovoltaic Education Network] * [http://www.semi1source.com/glossary/ Semiconductor Glossary] === Prosessteknologi === * [http://micro.magnet.fsu.edu/electromag/java/transistor/index.html Explore how an individual Field Effect (FET) transistor is fabricated on a silicon wafer simultaneously with millions of its neighbours] * [https://www.youtube.com/watch?v=Jctk0DI7YP8 Understanding The FinFet Semiconductor Process] * [https://youtu.be/MvbP_TizoNs Problems and Solutions at 7nm] * [https://youtu.be/Qo2ywUURSKg A tour inside Intel Corporation's D1D factory] * [https://www.youtube.com/watch?v=W3rfVpkNquA Intel Ivy Bridge 22nm FinFET Process Fabrication] * [https://youtu.be/ApWOf6J858Y Integrated circuit scaling to 10 nm and beyond - Mark Bohr, Intel Senior Fellow] * [http://spectrum.ieee.org/semiconductors/devices/transistor-wars Transistor Wars - Rival architectures face off in a bid to keep Moore's Law alive] === Logical effort === * [https://en.wikipedia.org/wiki/Logical_effort Logical Effort Wikipedia] === Matlab/Maple === Vi kan bruke Matlab/Maple for å løse ligninger og plotte resultater. Her er noen eksempler: * [[Symbolsk løsning av nodeligninger med Matlab]] * [http://lpsa.swarthmore.edu/Bode/BodeHow.html The Asymptotic Bode Diagram: Derivation of Approximations] === Kretssimulering === [[ Eksempler/Oppgaver ]] ==== AIM-Spice ==== AIM-Spice is a new version of SPICE running under the Microsoft Windows and Linux operating systems. AIM-Spice for Windows is capable of displaying graphically the results of a simulation in progress, a feature that allows the operator to terminate a run based on an instant information on intermediate simulation results. SPICE is the most commonly used analogue circuit simulator today and is enormously important for the electronics industry. SPICE is a general purpose analogue simulator which contains models for most circuit elements and can handle complex non-linear circuits. The simulator can calculate dc operating points, perform transient analyses, locate poles and zeros for different kinds of transfer functions, find the small signal frequency response, small signal transfer functions, small signal sensitivities, and perform Fourier, noise, and distortion analyses. [http://www.aimspice.com/download.html Download a free student version] ==== LTspice ==== LTspice is a high performance Spice III simulator, schematic capture and waveform viewer with enhancements and models for easing the simulation of switching regulators. Included in this download are Spice, Macro Models for 80% of Linear Technology's switching regulators, over 200 op amp models, as well as resistors, transistors and MOSFET models. [http://www.linear.com/designtools/software/switchercad.jsp Download LTspice] [[Category:Mikroelektronikk]] 4e3049300ca33712001a32546b948ce309a5d4e1